杰克逊:忽略@JsonIgnoreProperties注释

时间:2015-02-19 19:36:24

标签: java json jackson

我有一个我序列化的类,我在类级别使用@JsonIgnoreProperties来从中排除某些字段。

最近我有一个用例,我需要将这些字段序列化。

有没有办法让作家/读者忽略注释?

我正在调查@JsonView但似乎@JsonIgnoreProperties优先于它。

2 个答案:

答案 0 :(得分:0)

在这种情况下,@ jsonFilter可以帮到你。

通过定义自定义json过滤器,Jackson将动态地动态解析给定类使用的过滤器,允许每次调用重新配置过滤。

您可以找到详细的说明和用法示例here

有关您发现here

的动态忽视的一些有用信息

答案 1 :(得分:0)

我已经提出了一个解决方案,不知道它是否是最好的解决方案而已完成工作......

我最终使用@JsonView。

所以我有2个这样的观点:

public class Views {
    public  static class Public { }
    public  static class Extended extends Public { }
}

和默认的Spring映射器配置为

  mapper.setConfig(mapper.getSerializationConfig().withView(Views.Public.class));
  mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

并且该类看起来像

 public class Foo{
        String name;
        @JsonView(Views.Extended.class)
        String title;
...}

通过在对象映射器上设置默认视图,它会使其忽略所有其他未指定的视图。根据配置,没有注释的字段将始终被序列化。

然后,当我需要序列化整个类时,我使用:

objectMapper.writer().withView(Views.Extended.class).writeValueAsString(value);