使用 Jackson 从 JSON 数组中检索字符串
我已经找到了几个接近我想要做的答案,但还不够,以至于我能够让它发挥作用。我有一堆看起来像这个例子的JSON(实际上只有几个层次的深度,在我想要访问的级别上有数百个项目):。我无法更改格式;它是别人的API。有很多我不需要的;事实上,我只想要一个数组[“bobsyeruncle”,“easyaspie”]。(或列表或其他任何内容。{"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
我尝试了一个没有数组的更简单版本的JSON,并且能够使用rootNode.get(“query”).get(“pages”)轻松访问单个字符串。https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608 中描述的方式。但是我无法以这种方式到达阵列。我在这里找到的大多数答案都假设我想创建一个像“链接”这样的POJO,它同时包含“单词”和“代码”,而我没有。为了访问我想要的字符串,是否有必要创建一个类似于“链接”列表的东西,其中包括“单词”和“代码”,然后忽略“代码”?这似乎不对。
(另外,如果有人能给我指出位于JacksonInFiveMinutes教程和整个javadoc之间的文档/教程,我相信这也会有所帮助。
ETA这有效,我想!
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());
}