我找到了几个接近我尝试的解决方案的答案,但还不足以让我成功。我有一堆JSON数据,看起来像这个例子(实际上要深入几个级别,并且在我想要访问的级别上有数百个项目):
我用一个简单版本的JSON进行了实验,它没有数组,并且能够使用rootNode.get("query").get("pages") ...方法轻松访问单个字符串,如https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608所述。但是我无法通过这种方式访问数组。我在这里找到的大部分答案都假定我想创建一个包括“word”和“code”的POJO链接,但实际上我并不需要这样。为了访问我想要的字符串,是否有必要创建类似于包含“word”和“code”的“Links”列表,然后忽略“code”?这似乎不对。
(此外,如果有人能够将我指向介于JacksonInFiveMinutes教程和整个javadoc之间的文档/教程,那肯定会有所帮助。)
我认为这个方法可行!
{"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
。我无法更改格式,它是别人的API。我不需要很多这个数据;事实上,我只想要类似于 ["bobsyeruncle", "easyaspie"] 的数组(或List或其他类型)。我用一个简单版本的JSON进行了实验,它没有数组,并且能够使用rootNode.get("query").get("pages") ...方法轻松访问单个字符串,如https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608所述。但是我无法通过这种方式访问数组。我在这里找到的大部分答案都假定我想创建一个包括“word”和“code”的POJO链接,但实际上我并不需要这样。为了访问我想要的字符串,是否有必要创建类似于包含“word”和“code”的“Links”列表,然后忽略“code”?这似乎不对。
(此外,如果有人能够将我指向介于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());
}