从Jackson的ObjectNode创建继承的自定义类

时间:2012-10-26 13:09:02

标签: java json jackson

我想扩展ObjectNode,以便我可以使用几个辅助方法从JSON中获取几个特定字段。例如

public class MyNode extends ObjectNode {
  public void Long getTimestamp() {
    return this.get(HEADER).get(TIMESTAMP).asLong();
  }
}

但我遇到的问题是ObjectMapper()。readTree(“< ...我的JSON here ...>”)返回一个JsonNode对象,我显然无法将其转换为MyNode。

并且没有ObjectNode的构造需要另一个JsonNode。将JSON的字符串表示转换为MyNode对象的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要创建自定义JsonNodeFactory(并使用ObjectMapper注册它),这应该允许您提供自定义实现 - 它们必须是子类;但是您只需要创建自己的实例,然后反序列化器就可以填充它们。所以你不需要使用复制构造函数或转换。相反,调用工厂来创建新的空实例。