有没有类似@JsonIgnoreOtherProperties的东西?

时间:2016-12-19 13:50:32

标签: java json serialization jackson deserialization

杰克逊在场地级别有@JsonIgnoreProperties注释,这很棒,但有时可能很大。

@JsonIgnoreProperties({ "name", "phone", ... "20th item"})
private User user;

我正在寻找类似的东西:

@JsonIgnoreOtherProperties("email")
private User user;

所以这会忽略所有字段,但会发送电子邮件。

有类似@JsonIgnoreOtherProperties的东西吗?

1 个答案:

答案 0 :(得分:0)

我认为不存在,但有几种方法可以实现您的目标(除了您现有的解决方案):

1)使用@JsonViewhttp://wiki.fasterxml.com/JacksonJsonViews)。有关示例,请参阅What is the JSON View class in Jackson and how does it work?

2)创建一个不同的User视图,其中包含一组最小字段,可能是UserMinimal。它可能从您的其他User视图继承自公共接口,以显示它们实际上代表同一实体。

3)自定义对象映射器并使用过滤器。有关示例,请参阅How do I exclude fields with Jackson not using annotations?

就个人而言,如果你有一个简单的用例,我更喜欢第一个解决方案,如果你有一个更复杂的用例,我更喜欢第二个解决方案。我不喜欢第三种选择,因为我认为自定义对象映射器会导致我的体验中出错路径。

你的注释理念听起来很有趣。我会考虑把它作为一个功能请求(我认为它会https://github.com/FasterXML/jackson-annotations/issues)。