我正在尝试(反)序列化一个对象,该对象的属性具有来自maven依赖项的类型,因此我不能更改此类型的类。此类型的类具有@JsonSerialize和@JsonDeserialize注释。
但是,我希望使用默认的序列化程序和反序列化程序,因为自定义序列化程序写入的是数组而不是对象。有没有办法,使用注释,告诉jackson使用默认的(反)序列化程序?
发布于 2017-05-13 17:20:53
您可以使用Jackson的mixins特性禁用注释。
在下面的示例中,任何反序列化到CustomerObj的尝试都将由于其有缺陷的Builder而导致异常
@JsonDeserialize(builder = CustomerObj.class)
public class CustomerObj {
public String name;
public int age;
public CustomerObj build() {
throw new RuntimeException("JsonDeserializer invoked");
}
}使用JsonDeserialize注释创建一个mixin,该注释禁用损坏的构建器:
@JsonDeserialize(builder = java.lang.Void.class)
public static abstract class CustomerMixin { }在ObjectMapper实例上注册mixin:
ObjectMapper om = new ObjectMapper();
om.addMixIn(CustomerObj.class, CustomerMixin.class);享受工作中的反序列化:
final String json = "{\"name\":\"Brian\",\"age\":41}";
CustomerObj customer = om.readValue(json, CustomerObj.class);https://stackoverflow.com/questions/43938329
复制相似问题