在@JsonSerialize批注中设置和删除自定义序列化程序

时间:2018-07-11 09:49:25

标签: java json serialization jackson json-deserialization

我正在将JSON转换为Java对象。我的Java对象类中的几个字段使用我定义的自定义序列化程序。例如:

@JsonProperty("table_name")
@JsonSerialize(using = MyCustomSerializer.class)
private String tableName;

我只想在某些情况下使用我的自定义序列化程序。是否可以在using =批注中设置@JsonSerialize

我的ObjectMapper中具有以下JacksonAnnotationIntrospector:

private static final JacksonAnnotationIntrospector ignoreCustomSerializer = new JacksonAnnotationIntrospector() {
    @Override
    protected <A extends Annotation> A _findAnnotation(final Annotated annotated, final Class<A> annoClass) {
        if (!annotated.hasAnnotation(JsonSerialize.class)) {
            return super._findAnnotation(annotated, annoClass);
        }
        return null;
    }
};

objectMapper.setAnnotationIntrospector(ignoreCustomSerializer);

此自省者使我的对象映射器忽略带有@JsonSerialize批注的所有字段。我不想忽略该字段,只是我设置的自定义序列化程序。可以修改内省者以更改using =批注中的@JsonSerialize吗?

0 个答案:

没有答案