我正在尝试迭代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,但接受的答案根本不起作用,因为fields
和fieldNames
都返回iterator
,无法通过foreach
进行迭代{1}}自行循环as far as I know。
另一个最受欢迎的答案有效,但我想知道上述代码段的假设是否仍然有效。
答案 0 :(得分:1)
没有
JsonNode#iterator()
州的javadoc
与调用
elements();
相同,以便于“for-each” loop可用于循环JSON Array构造的元素。
JsonNode#elements()
州的javadoc
访问此节点的所有值节点的方法,如果此节点是a JSON数组或对象节点。 对象节点,字段名称(键) 不包含,仅包含值。对于其他类型的节点,返回空 迭代器。
因此返回的元素是对象节点的每个键值对的值。对于数组节点,它是数组元素。