【发布时间】: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())更可取。但是您使用的方法也可以。