Jackson:忽略@JsonIgnoreProperties注解

3
我有一个需要序列化的类,我使用 @JsonIgnoreProperties 在类级别上排除其中的一些字段。
最近,我有一个使用案例,需要将这些字段序列化。
有没有一种方法可以创建一个读写器来忽略该注释?
我正在研究 @JsonView ,但似乎 @JsonIgnoreProperties 优先于它。
2个回答

0

@JsonFilter可以在这种情况下帮助您。

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

您可以在此处找到详细说明和用法示例。

有关动态忽略的一些有用信息,请在此处找到。


0

我想出了一个解决方案,不知道它是否是最好的,但能完成工作...

最后我使用了@JsonView。

所以我有两个类似这样的视图:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接