/ / Como extrair propriedade de JSON incorporado dentro de JSON? - java, json, gson

Como extrair propriedade do JSON incorporado no JSON? - java, json, gson

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 № 1

Você 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());