我有一个我序列化的类,我在类级别使用@JsonIgnoreProperties
来从中排除某些字段。
最近我有一个用例,我需要将这些字段序列化。
有没有办法让作家/读者忽略注释?
我正在调查@JsonView
但似乎@JsonIgnoreProperties
优先于它。
答案 0 :(得分:0)
通过定义自定义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);