我想在使用 Jackson 1.9 反序列化特定类型时运行一些自定义代码。但是,我不想手写整个解串器,只是添加到默认行为中。然而,尝试在 JsonDeserializer
中执行此操作会导致无限递归。目前,我的方法使用完全独立的 ObjectMapper
,但这感觉像是一个巨大的 hack。
private static class SpecialDeserializer extends JsonDeserializer<Special> {
@Override
public Special deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode jsonNode = jp.readValueAsTree();
ObjectMapper otherMapper = getOtherMapper();
Special special = otherMapper.readValue(jsonNode, Special.class);
special.setJsonNode(jsonNode);
return special;
}
}
最佳答案
Polymorphic deserialization应该能够处理从输入内容导出输入类型。如果这就是您需要自定义反序列化的原因,您可以通过注释来实现它。参见 this example供引用。
(很抱歉没有回答实际问题;这回答了我从发帖人的评论中推断出的“根本”问题)。
关于java - 使用 Jackson 在反射反序列化之上自定义反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470428/