Disable Jackson mapper for a particular annotation(为特定注释禁用 Jackson 映射器)
问题描述
使用 Jackson,可以轻松禁用给定 ObjectMapper
的所有注释.有没有办法只禁用一个给定的注释?
With Jackson, it's easy to disable all annotations for a given ObjectMapper
.
Is there a way to only disable one given annotation?
// disable all
ObjectMapper mapper = new ObjectMapper()
mapper.disable(MapperFeature.USE_ANNOTATIONS);
// disable one?
ObjectMapper mapper = new ObjectMapper()
mapper.disable(@JsonIgnore);
使用 @JacksonAnnotationsInside
,我定义了一个自定义 Jackson 注释,我只希望它在某些情况下使用.
Using @JacksonAnnotationsInside
, I've defined a custom Jackson annotation and I only want it to be used in certain circumstances.
推荐答案
这是我遇到的最好的.我想我是在某个地方的 Jackson 用户组论坛上看到的.
This the best I've come across. I think I saw it on the Jackson user group forums somewhere.
本质上,它创建了一个自定义注解内省器,如果它看到它有一个特定的注解(在本例中为 JsonTypeInfo),则返回 null
Essentially it makes a custom annotation introspector, which returns null if it sees that it has a specific annotation (in this case JsonTypeInfo)
JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() {
@Override
protected TypeResolverBuilder<?> _findTypeResolver(
MapperConfig<?> config, Annotated ann, JavaType baseType) {
if (!ann.hasAnnotation(JsonTypeInfo.class)) {
return super._findTypeResolver(config, ann, baseType);
}
return null;
}
};
mapper.setAnnotationIntrospector(ignoreJsonTypeInfoIntrospector);
这篇关于为特定注释禁用 Jackson 映射器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为特定注释禁用 Jackson 映射器


基础教程推荐
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
- Java 实例变量在两个语句中声明和初始化 2022-01-01
- 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
- 验证是否调用了所有 getter 方法 2022-01-01
- 多个组件的复杂布局 2022-01-01
- 在 Java 中创建日期的正确方法是什么? 2022-01-01
- 不推荐使用 Api 注释的描述 2022-01-01
- 从 python 访问 JVM 2022-01-01
- 大摇大摆的枚举 2022-01-01
- Java Swing计时器未清除 2022-01-01