杰克逊在场地级别有@JsonIgnoreProperties
注释,这很棒,但有时可能很大。
@JsonIgnoreProperties({ "name", "phone", ... "20th item"})
private User user;
我正在寻找类似的东西:
@JsonIgnoreOtherProperties("email")
private User user;
所以这会忽略所有字段,但会发送电子邮件。
有类似@JsonIgnoreOtherProperties的东西吗?
答案 0 :(得分:0)
我认为不存在,但有几种方法可以实现您的目标(除了您现有的解决方案):
1)使用@JsonView
(http://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)。