0

我正在尝试遍历 JsonNode 树,并且我编写了以下代码片段,它遍历根节点的子节点并从中获取文本,我假设这将是一个字段名称。

JsonNode rootNode = new ObjectMapper().readTree(jsonParser);
for (JsonNode node : rootNode){
    String fieldName = node.asText(); // <- is it safe to assume this?
    JsonNode value =  node.get(fieldName);
}

我已经阅读了这篇类似的帖子,但接受的答案根本不起作用,因为两者fieldsfieldNamesreturn ,据我所知iterator,它不能单独通过foreach循环进行迭代。

另一个最受好评的答案有效,但我想知道上述片段的假设是否仍然有效。

4

1 回答 1

1

不。

JsonNode#iterator()各州的 javadoc

与实现的调用相同,elements();因此方便的“for-each”循环可用于循环 JSON 数组结构的元素。

JsonNode#elements()以及各州的 javadoc

访问该Node的所有value节点的方法,如果该节点是JSON Array或者Object节点。在对象节点的情况下,不包括字段名称(键),仅包括值。对于其他类型的节点,返回空迭代器。

所以返回的元素是对象节点的每个键值对的值。对于数组节点,它是数组元素。

于 2016-08-11T00:52:25.590 回答