在Jackson的反射反序列化之上进行自定义反序列化

Tav*_*nes 8 java json jackson

我想在使用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)

Pau*_*cks 2

多态反序列化应该能够处理从输入内容派生输入类型。如果这就是您需要自定义反序列化的目的,您可以通过注释来实现。请参阅此示例以供参考。

(抱歉没有回答实际问题;这回答了我从发帖者的评论中推断出的“根本”问题)。