Este é o JSON String que estou recebendo de volta de um URL e gostaria de extrair highDepth
valor da string JSON abaixo.
{
"description": "",
"bean": "com.hello.world",
"stats": {
"highDepth": 0,
"lowDepth": 0
}
}
Estou usando o GSON aqui, pois sou novo no GSON. Como faço para extrair highDepth
do JSON Strirng acima usando o GSON?
String jsonResponse = restTemplate.getForObject(url, String.class);
// parse jsonResponse to extract highDepth
Respostas:
2 para resposta № 1Você cria um par de POJOs
public class ResponsePojo {
private String description;
private String bean;
private Stats stats;
//getters and setters
}
public class Stats {
private int highDepth;
private int lowDepth;
//getters and setters
}
Você então usa isso no RestTemplate#getForObject(..)
ligar
ResponsePojo pojo = restTemplate.getForObject(url, ResponsePojo.class);
int highDepth = pojo.getStats().getHighDepth();
Não há necessidade de Gson.
Sem POJOs, desde RestTemplate
por padrão usa Jackson, você pode recuperar a árvore JSON como um ObjectNode
.
ObjectNode objectNode = restTemplate.getForObject(url, ObjectNode.class);
JsonNode highDepth = objectNode.get("stats").get("highDepth");
System.out.println(highDepth.asInt()); // if you"re certain of the JSON you"re getting.
1 para resposta № 2
Referindo-se a Análise JSON usando o Gson para Java, Eu escreveria algo como
JsonElement element = new JsonParser().parse(jsonResponse);
JsonObject rootObject = element.getAsJsonObject();
JsonObject statsObject = rootObject.getAsJsonObject("stats");
Integer highDepth = Integer.valueOf(statsObject.get("highDepth").toString());