У меня есть API, который возвращает JSON в этом формате:
{
"errors": null,
"someKey1": "someValue1",
"someKey2": "someValue2",
"response": {
"id": 21,
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": {
"key5": [
{
"ABC": "abc",
"XYZ": 1,
"PQR": "pqr"
},
{
"ABC": "abc",
"XYZ": 3,
"PQR": "pqr"
}
]
},
"key6": "value6"
}
}
У меня также есть класс POJO, в котором есть поля, соответствующие ключу response
ответа JSON, потому что ключи someKey1
, someKey2
и errors
не имеют отношения к моему варианту использования.
Можно ли сопоставить ответ JSON с моим классом Java POJO, т.е. сопоставить только значения внутри ключа response
?
Один из возможных подходов — принять ответ String и сопоставить его с моим POJO с помощью методов установки.
String apiResponse = restTemplate.exchange(someUrl, HttpMethod.GET, new HttpEntity<>(authHeader), String.class).getBody();
JSONObject jsonObject = new JSONObject(apiResponse);
MyObject myObject = buildNewObject(jsonObject.get("response"));
Есть ли способ лучше. Что-то вроде этого ? :
ResponseEntity<MyObject> responseEntity = restTemplate.exchange(someUrl, HttpMethod.GET, new HttpEntity<>(authHeader), MyObject.class).getBody().get("response");