【问题标题】:Convert JsonNode to POJO inside a custom deserializer [duplicate]在自定义反序列化器中将 JsonNode 转换为 POJO [重复]
【发布时间】:2019-11-16 19:39:58
【问题描述】:

我想要实现的是在自定义反序列化器中将 JsonNode 转换为 POJO(=对其进行反序列化)。

大多数其他答案建议使用对象映射器,但我在 deserialize 方法中没有。

这是我的自定义反序列化器:

class AccountDeserializer extends StdDeserializer<Input> {
    public AccountDeserializer() {
        this(null);
    }

    public AccountDeserializer(Class<?> vc) {
        super(vc);
    }

    @Override
    public Account deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        JsonNode root = jp.getCodec().readTree(jp);
        User user = root.get("user").????;

        // other statements

        Account acc = new Account(user);
        return acc;
    }
}

User 是一个简单的类)

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    您可以像这样在JsonParser 中使用ObjectCodec

    jp.getCodec().treeToValue(root.get("user"), User.class)
    

    这将根据任何其他现有序列化规则返回您的 User 对象。

    感谢@galcyurio 在Convert JsonNode into POJO 中的评论:

    你也可以在StdDeserializer中使用这个方法:p.codec.treeToValue

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 2015-05-15
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多