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

时间:2016-09-30 10:58:22

标签: java json jackson

我的POJO类对字段的声明有@JsonIgnore,而不是getter和setter方法。这是一个生成的文件,我无法改变它。

使用JsonGenerator.Setting写作时如何忽略该字段?在getter和setter上使用@JsonIgnore可以正常工作。但是无法修改生成的POJO类。

2 个答案:

答案 0 :(得分:2)

配置Jackson仅使用字段注释

在字段上放置注释后,您可以将ObjectMapper配置为仅使用字段注释,忽略getter和setter方法的注释:

ObjectMapper mapper = new ObjectMapper();    
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);

Jackson混合注释

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

定义混合注释界面(类也可以):

public interface FooMixIn {

    @JsonIgnore
    String getBar();
}

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

ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT)
                                        .addMixIn(Foo.class, FooMixIn.class); 

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

  • 杰克逊认可的所有注释集都可以混合使用。
  • 可以混合使用各种注释(成员方法,静态方法,字段,构造函数注释)。
  • 只有方法(和字段)名称和签名用于匹配注释:访问定义(privateprotected,...)和方法实现被忽略。

有关详细信息,请查看此page

答案 1 :(得分:0)

将这些字段定义为transients,避免将它们序列化 无论你使用json的注释是什么......