假设Jackson中根节点的所有子节点都是字段名称是否合理?

时间:2016-08-11 00:44:01

标签: java json jackson jackson2

我正在尝试迭代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);
}

我已阅读this similar post,但接受的答案根本不起作用,因为fieldsfieldNames都返回iterator,无法通过foreach进行迭代{1}}自行循环as far as I know

另一个最受欢迎的答案有效,但我想知道上述代码段的假设是否仍然有效。

1 个答案:

答案 0 :(得分:1)

没有

JsonNode#iterator()州的javadoc

  

与调用elements();相同,以便于“for-each”   loop可用于循环JSON Array构造的元素。

JsonNode#elements()州的javadoc

  

访问此节点的所有值节点的方法,如果此节点是a   JSON数组或对象节点。 对象节点,字段名称(键)   不包含,仅包含值。对于其他类型的节点,返回空   迭代器。

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