在自定义反序列化器中将JsonNode转换为POJO

时间:2019-07-06 15:29:26

标签: java json jackson

我想要实现的是在自定义反序列化器中将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是一个简单的类)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

  

您也可以在StdDeserializer中使用此方法:p.codec.treeToValue