我想要实现的是在自定义反序列化器中将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
是一个简单的类)
答案 0 :(得分:0)
您可以像这样在ObjectCodec
中使用JsonParser
:
jp.getCodec().treeToValue(root.get("user"), User.class)
这将根据任何其他现有的序列化规则为您提供User
对象。
感谢@galcyurio在Convert JsonNode into POJO中的评论:
您也可以在StdDeserializer中使用此方法:p.codec.treeToValue