java - 使用 Jackson 在反射反序列化之上自定义反序列化

标签 java json jackson

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

相关文章:

java - jackson - 必需的属性(property)?

java - org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure : Could not find MessageBodyWriter for response object of type

java - 如何找到两个Java项目之间的差异

java - 并发 HashMap java

java - 如何删除 Jackson 自定义序列化程序生成的空值?

java - 强制 jackson 在没有 JsonIgnore 的情况下忽略 isEmpty

java - Spring Data REST 使用 QueryDSL 绑定(bind)进行范围检查

java - 在java程序中创建实例时?

java - 过滤时很漂亮的 JSON 导入,但返回整批数据时则不然 + ID 中丑陋的括号

php - jquery、ajax、php、json - 有没有一个好的 jquery 级联/链式选择插件?