我想在使用Jackson 1.9反序列化特定类型时运行一些自定义代码.但是,我不想手写整个反序列化器,只需添加到默认行为.但是,尝试以JsonDeserializer天真的方式执行此操作会导致无限递归.目前,我的方法使用完全独立ObjectMapper,但感觉就像一个巨大的黑客.
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;
}
}
Run Code Online (Sandbox Code Playgroud)