我的POJO类对字段的声明有@JsonIgnore
,而不是getter和setter方法。这是一个生成的文件,我无法改变它。
使用JsonGenerator.Setting
写作时如何忽略该字段?在getter和setter上使用@JsonIgnore
可以正常工作。但是无法修改生成的POJO类。
答案 0 :(得分:2)
在字段上放置注释后,您可以将ObjectMapper
配置为仅使用字段注释,忽略getter和setter方法的注释:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
当修改POJO不是一种选择时,这是一个很好的选择。您可以将其视为一种面向方面的方法,在运行时添加更多注释,以增加静态定义的注释。
定义混合注释界面(类也可以):
public interface FooMixIn {
@JsonIgnore
String getBar();
}
然后配置ObjectMapper
以使用定义的接口(或类)作为POJO的混合:
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT)
.addMixIn(Foo.class, FooMixIn.class);
以下是一些使用注意事项:
private
,protected
,...)和方法实现被忽略。有关详细信息,请查看此page。
答案 1 :(得分:0)
将这些字段定义为transients
,避免将它们序列化
无论你使用json的注释是什么......