Я нашел несколько ответов, которые близки к тому, что я пытаюсь сделать, но недостаточно, чтобы я смог заставить его работать. У меня есть набор JSON, который выглядит как этот пример (только на несколько уровней глубже и с сотнями элементов на уровне, к которому я хочу получить доступ): {"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
. Я не могу изменить формат; это чужой API. Там довольно много того, что мне не нужно; на самом деле я хочу только что-то вроде массива ["bobsyeruncle", "easyaspie"]. (Или Список или что-то еще.)
Я экспериментировал с более простой версией JSON, у которой не было массива, и я мог легко получить доступ к одной строке, используя rootNode.get ("query"). Get ("pages") ... way описано в https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608. Но я так и не смог получить доступ к массиву. Большинство ответов, которые я нашел здесь, предполагают, что я хочу создать POJO, такой как «Ссылки», который включает в себя как «слово», так и «код», чего я не делаю. Чтобы получить доступ к нужным строкам, нужно ли создавать что-то вроде списка «ссылок», включающего «слово» и «код», а затем игнорировать «код»? Это не кажется правильным.
(Также, если бы кто-нибудь мог указать мне на документацию / учебники где-то между учебником JacksonInFiveMinutes и всем javadoc, я уверен, что это тоже поможет.)
ЭТА это сработало, я думаю!:
String theJsonString = "{\"query\":{\"pages\":{\"links\":"
+ "[{\"word\":\"bobsyeruncle\"},{\"word\":\"easyaspie\"}]}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(theJsonString);
JsonNode interestingObjectNode = rootNode.path("query").path("pages").path("links");
for (int i = 0; i < interestingObjectNode.size(); i ++) {
System.out.println(interestingObjectNode.get(i).path("word").asText());
}