Невозможно получить одно значение из JSON, используя Джексона - PullRequest
1 голос
/ 14 марта 2019

Мне нужно получить одно значение из JSON, но в качестве значения я получаю нулевое значение.

public class PlaceTest {
    public void sendRequest() throws Exception{
        URIBuilder builder = new URIBuilder("https://maps.googleapis.com/maps/api/place/findplacefromtext/json");
        builder.addParameter("key","mykey");
        builder.addParameter("input","London");
        builder.addParameter("inputtype","textquery");
        HttpGet getReq = new HttpGet(builder.build());

        HttpClient client = new DefaultHttpClient();
        HttpResponse httpResponse = client.execute(getReq);
        BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
        StringBuilder builders = new StringBuilder();
        String s;
        while ((s = reader.readLine())!=null){
        builders.append(s+"\n");
        }

        ObjectMapper mapper = new ObjectMapper();

        JsonNode node = mapper.readTree(builders.toString());
        JsonNode candidates = node.get("candidates");
        System.out.println(candidates.get("place_id"));

        //json
        System.out.println(builders.toString());
    }
}

Код JSON:

{"candidates":[{"place_id" : "ChIJdd4hrwug2EcRmSrV3Vo6llI"}],"status" : "OK"}

1 Ответ

3 голосов
/ 14 марта 2019

В приведенном выше JSON candidates значение равно JsonArray

JsonNode node = mapper.readTree(builders.toString());
JsonNode candidates = node.get("candidates");

Теперь итерируем JsonArray и получаем place_id:

if (candidates.isArray()) {
    for (JsonNode objNode : arrNode) {
        System.out.println(objNode.get("place_id"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...