是否可以忽略@JsonSerialize注释?

时间:2016-04-18 20:03:30

标签: java json serialization jackson

是否可以使用Jackson序列化对象,但忽略使用注释@JsonSerialize(using = MyCustomSerializer.class)注册的自定义序列化程序?

理由: 我想使用Jackson将我的对象转换为Map,使用com.fasterxml.jackson.databind.ObjectMapper.convertValue(object,Map.class)。 目前它不起作用,因为我的类有自定义序列化程序(@JsonSerialize)但错过了反序列化程序。我需要自定义序列化器,我真的不需要也不想写反序列化器。

ObjectMapper.convertValue使用我的序列化然后在反序列化时失败。

我想让ObjectMapper忽略@JsonSerialize并使用默认的序列化逻辑。这可能与杰克逊有关吗?

2 个答案:

答案 0 :(得分:2)

这完全有可能。您可以基于每个ObjectMapper禁用注释,如下所示:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_ANNOTATIONS);

有关详细信息,请查看github上的文档,或查看baeldung处的示例。

答案 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实例。