【问题标题】:Convert JsonNode into Object将 JsonNode 转换为对象
【发布时间】:2014-09-21 09:31:43
【问题描述】:

我有一个由外部库提供的 JsonNode。我需要将此 JsonNode 转换为它的 POJO 表示形式。

我见过这样的方法:

mapper.readValue(jsonNode.traverse(), MyPojo.class);

但我对这个解决方案不太满意。 traverse() 实际上会在将我的 JsonNode 反序列化为 POJO 之前将其转换为字符串表示形式。在这种情况下,性能对我来说是一个问题。

还有其他方法吗?

谢谢

【问题讨论】:

  • 好吧,您可以查询节点以查看它是什么类型,然后将其作为“真实”类型处理。并且,如有必要,请为您的班级编写一个MyObject(jsonObject object) 构造函数,如果您无法说服杰克逊做任何事情。
  • FWIW,traverse() 不会构造 JSON 字符串,而是将节点公开为令牌。它确实有一些开销,因此下面建议的其他方法(convertValue()、treeToValue())更可取。但是您使用的方法也可以。

标签: java json jackson


【解决方案1】:

也许您正在寻找:

mapper.convertValue(jsonNode, MyPojo.class)

【讨论】:

  • 我想是的;甚至mapper.treeToValue(jsonNode, MyPojo.class)(不是更短)
  • 嗯,根据文档,这是一个两步转换,所以这并不比我猜的要好多少?什么更快? traverse() 还是 convertValue()? “从给定值到给定值类型的实例进行两步转换的便捷方法。这相当于首先将给定值序列化为 JSON,然后将 JSON 数据绑定到给定类型的值”
猜你喜欢
  • 2015-01-02
  • 2012-08-03
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2013-07-11
  • 2012-07-17
相关资源
最近更新 更多