首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackson:使用默认(反)序列化程序

Jackson:使用默认(反)序列化程序
EN

Stack Overflow用户
提问于 2017-05-12 20:55:20
回答 1查看 627关注 0票数 0

我正在尝试(反)序列化一个对象,该对象的属性具有来自maven依赖项的类型,因此我不能更改此类型的类。此类型的类具有@JsonSerialize@JsonDeserialize注释。

但是,我希望使用默认的序列化程序和反序列化程序,因为自定义序列化程序写入的是数组而不是对象。有没有办法,使用注释,告诉jackson使用默认的(反)序列化程序?

EN

回答 1

Stack Overflow用户

发布于 2017-05-13 17:20:53

您可以使用Jackson的mixins特性禁用注释。

在下面的示例中,任何反序列化到CustomerObj的尝试都将由于其有缺陷的Builder而导致异常

代码语言:javascript
复制
@JsonDeserialize(builder = CustomerObj.class)
public class CustomerObj {
    public String name;
    public int age;

    public CustomerObj build() {
        throw new RuntimeException("JsonDeserializer invoked");
    }
}

使用JsonDeserialize注释创建一个mixin,该注释禁用损坏的构建器:

代码语言:javascript
复制
@JsonDeserialize(builder = java.lang.Void.class)
public static abstract class CustomerMixin { }

ObjectMapper实例上注册mixin:

代码语言:javascript
复制
ObjectMapper om = new ObjectMapper();
om.addMixIn(CustomerObj.class, CustomerMixin.class);

享受工作中的反序列化:

代码语言:javascript
复制
final String json = "{\"name\":\"Brian\",\"age\":41}";
CustomerObj customer = om.readValue(json, CustomerObj.class);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43938329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档