gpt4 book ai didi

java - 为特定注释禁用 Jackson 映射器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:47 24 4
gpt4 key购买 nike

使用 Jackson,可以很容易地禁用给定 ObjectMapper 的所有注释。有没有办法只禁用一个给定的注释?

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

// disable one?
ObjectMapper mapper = new ObjectMapper()
mapper.disable(@JsonIgnore);

使用 @JacksonAnnotationsInside,我定义了一个自定义 Jackson 注释,我只希望在特定情况下使用它。

最佳答案

这是我遇到的最好的。我想我在某个地方的 Jackson 用户组论坛上看到了它。

本质上,它创建了一个自定义注释内省(introspection)器,如果发现它具有特定注释(在本例中为 JsonTypeInfo),则返回 null

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);

关于java - 为特定注释禁用 Jackson 映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14056716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com