【问题标题】:JacksonNode iterator, get key valueJacksonNode迭代器,获取键值
【发布时间】:2021-09-10 12:18:14
【问题描述】:

我正在将填充有值的“用户类”类型的变量转换为 JsonNode,如下所示:

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

我需要迭代循环遍历该节点的每个元素,并获取其键和值,例如: “名字”:约翰, “姓氏”:H 等等 所以我有通过 json 节点的迭代器:

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

但是当我做 iterator.next() 时,我直接得到了 John 的值,没有 key。我需要同时获得密钥和价值。 如何访问 JsonNode 类型的迭代器中的键? 我做错了什么,还是有更好的方法来遍历这些属性?

【问题讨论】:

    标签: java json kotlin jackson


    【解决方案1】:

    JsonNodeiterator() method

    同调用elements();实施以便方便“每个人” loop 可用于循环遍历 JSON Array 结构的元素。

    对于ObjectNode,实现elements()返回字段名

    访问这个Node的所有value节点的方法,如果这个节点是一个 JSON 数组或对象节点。 在对象节点的情况下,字段名称(键) 不包括在内,只有值。对于其他类型的节点,返回空 迭代器。

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

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

    它返回一个Iterator&lt;Map.Entry&lt;String,JsonNode&gt;&gt;,其中Entry 键是名称,JsonNode 是值。

    您必须将node 转换为ObjectNode 才能调用fields(假设它是ObjectNode)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      相关资源
      最近更新 更多