当前位置: 首页 > 知识库问答 >
问题:

JacksonNode迭代器,获取键值

双志强
2023-03-14

我将“User class”类型的变量转换为JsonNode,如下所示:

val mapper = ObjectMapper()
val node = mapper.valueToTree<JsonNode>(userData)

我需要迭代地循环该节点的每个元素,并获取其键和值,例如:“name”:John,“lastname”:H等等

val iterator: Iterator<JsonNode> = node.iterator()

但是当我做iterator.next()时,我直接得到约翰值,没有键。我需要同时得到键和值。我如何在JsonNode类型的迭代器中访问键?我做错了什么,或者有没有更好的方法来迭代这些属性?

共有1个答案

农明辉
2023-03-14

JsonNodeiterator()方法

与调用元素()相同;实现方便的for each循环可用于在JSON Array构造的元素上循环。

对于ObjectNode元素()实现为返回字段名

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

这不是你想要的。您需要类似于fields()

方法用于访问此JSON对象的所有字段(包括名称和值)。

返回一个迭代器

必须将节点强制转换为对象节点,才能调用字段(假设它是对象节点)。

还有其他更恰当的方法,如field Names(),它们提供所有键的名称,然后您可以使用get(String)来检索值。

 类似资料:
  • 我正在尝试使用列表迭代器来遍历一个链表,并根据存储在那里的整数值对下一个节点进行一些操作/检查,但我的代码中出现了一些错误。我想我不明白iterator.next()正在返回什么(一些E对象,但我不知道如何从它中访问我想要的值)编辑器希望我做一些如下所述的转换。它摆脱了错误,但我不知道这是否是处理问题的安全方法,或者它是否具有我正在寻找的行为。请解释为什么我会得到错误,以及是否有一个好的方法来处理

  • 回溯的痕迹 对于路径[/sptestjs]的上下文中的servlet[sptestjs]的servlet.servelet.service()抛出异常[请求处理失败;嵌套异常是java.lang.ClassCastException:[ljava.lang.Object;无法强制转换为根原因java.lang.ClassCastException:[ljava.lang.Object;无法强制转换

  • 迭代器 乍看来,迭代器似乎很直观。但凑近了看,你会发现标准STL容器提供了四种不同的迭代器:iterator、const_iterator、reverse_iterator和const_reverse_iterator。很快你会注意到在这四种类型中,容器的insert和erase的某些形式只接受其中一种。那是问题的开始。为什么有四种迭代器?它们之间的关系是什么?它们可以互相转化吗?在调用算法和ST

  • For freedom Christ has set us free. Stand firm, therefore, and do not submit again to a yoke of slavery. 基督释放了我们,叫我们得以自由,所以要站立得稳,不要再被奴仆的轭挟制。(GALATIANS 5:1) 迭代器 迭代,对于读者已经不陌生了,曾有专门一节来讲述,如果印象不深,请复习《迭代》。

  • 在Rust中,迭代器共分为三个部分:迭代器、适配器、消费者。 其中,迭代器本身提供了一个惰性的序列,适配器对这个序列进行诸如筛选、拼接、转换查找等操作,消费者则在前两者的基础上生成最后的数值集合。 但是,孤立的看这三者其实是没有意义的,因此,本章将在一个大节里联系写出三者。 迭代器、适配器、消费者

  • 正如我们之前学到的,在Python中我们可以使用“for”循环来迭代出对象中的内容: >>> for value in [0, 1, 2, 3, 4, 5]: ... print(value) ... 0 1 4 9 16 25 可以使用“for”循环(迭代)的对象称为迭代器。因此,一个迭代器也就是一个遵循了迭代协议的对象。 内置函数“iter”可以用来创建一个迭代对象,这时使用“next”函数