是否可以使用Jackson序列化对象,但忽略使用注释@JsonSerialize(using = MyCustomSerializer.class)
注册的自定义序列化程序?
理由:
我想使用Jackson将我的对象转换为Map,使用com.fasterxml.jackson.databind.ObjectMapper.convertValue(object,Map.class)
。
目前它不起作用,因为我的类有自定义序列化程序(@JsonSerialize)但错过了反序列化程序。我需要自定义序列化器,我真的不需要也不想写反序列化器。
ObjectMapper.convertValue
使用我的序列化然后在反序列化时失败。
我想让ObjectMapper忽略@JsonSerialize并使用默认的序列化逻辑。这可能与杰克逊有关吗?
答案 0 :(得分:2)
这完全有可能。您可以基于每个ObjectMapper禁用注释,如下所示:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_ANNOTATIONS);
答案 1 :(得分:1)
你也可以通过使用ignoreJsonTypeInfoIntrospector禁用特定的annoation,并为spsific annoation类返回null;
看看最后的github issue
public class IgnoreJsonUnwrappedAnnotationInspector extends JacksonAnnotationIntrospector {
@Override
public NameTransformer findUnwrappingNameTransformer(AnnotatedMember member) {
return null;
}
}
还可以查看更多detailed example
另一个解决方案是为不同的场景创建更多的ObjectMapper实例。