Если вы используете Jackson
в качестве анализатора JSON, простой способ объявить body
как JsonNode
для обработки динамических ключей следующим образом:
class MyResponse {
private MyHeader header;
private JsonNode body;
//general getters and setters
}
И я предположил, чтоу вас уже есть POJO для header
, например:
class MyHeader {
private String serviceType;
//general getters and setters
}
Наконец, давайте проверим, работает ли он:
String responseStr = "{\"header\": {\"serviceType\": \"A\"},\"body\": {\"id\": \"1\",\"name\": \"abc\"}}";
ObjectMapper mapper = new ObjectMapper();
MyResponse myResponse = mapper.readValue(responseStr, MyResponse.class);
System.out.println(myResponse.getBody().get("name").asText());
Вывод на консоль:
abc
Еще один способ решить эту проблему - использовать Map
, а все остальное - то же:
class MyResponse {
private MyHeader header;
private Map<String, Object> body;
//general getters and setters
}