首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >忽略一个字段而不使用Jackson修改POJO类

忽略一个字段而不使用Jackson修改POJO类
EN

Stack Overflow用户
提问于 2016-09-30 10:58:22
回答 2查看 2.5K关注 0票数 2

我的POJO类在字段的声明上有@JsonIgnore,而不是在getter和setter方法上。这是一个生成的文件,我不能在其中进行太多的更改。

如何在使用JsonGenerator.Setting编写时忽略该字段?在getter和setter上使用@JsonIgnore是可行的。但是不能修改生成的POJO类。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-30 11:48:08

将Jackson配置为仅使用字段注释

一旦将注释放在字段上,就可以将ObjectMapper配置为只使用字段注释,而忽略getters和setters方法的注释:

代码语言:javascript
代码运行次数:0
运行
复制
ObjectMapper mapper = new ObjectMapper();    
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);

Jackson混合注释

当修改POJO不是一种选择时,这是一个很好的选择。您可以认为它是一种面向方面的方法,可以在运行时添加更多的注释,以增强静态定义的注释。

定义一个混合注释接口(类也可以):

代码语言:javascript
代码运行次数:0
运行
复制
public interface FooMixIn {

    @JsonIgnore
    String getBar();
}

然后将ObjectMapper配置为使用定义的接口(或类)作为POJO的混合:

代码语言:javascript
代码运行次数:0
运行
复制
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT)
                                        .addMixIn(Foo.class, FooMixIn.class); 

以下是一些使用方面的注意事项:

  • 杰克逊识别的所有注释集都可以混合在其中。
  • 可以将各种注释(成员方法、静态方法、字段、构造器注释)混合在一起。
  • 只有方法(和字段)名称和签名用于匹配注释:访问定义(privateprotected,.)方法实现被忽略。

有关更多细节,请查看此页面

票数 4
EN

Stack Overflow用户

发布于 2016-09-30 11:17:14

将这些字段定义为transients,避免它们被序列化,而不管您对json使用什么注释.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39789935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档