我正在编写Spring Web Service,默认使用Jackson。我正在使用@JsonView来指示我需要将哪个属性解析为我的JSON对象。因此,问题是:许多对象在不同的类中使用,但不完全是所有属性,例如:
class Professor {
@JsonView({Views.Public.class, Views.Internal.class})
private int id;
@JsonView(Views.Internal.class)
private String name;
...
}
class Classroom {
@JsonView({Views.Public.class, Views.Internal.class})
private int id;
@JsonView(Views.Internal.class)
private String name;
...
}
class Lecture {
@JsonView(Views.Public.class)
private Professor professor;
@JsonView(Views.Public.class)
private Classroom classroom;
...
}
如果我需要两个以上的“视角”,我必须创建更多的接口/类来做到这一点? (比如Views.Professor,Views.Principal,......)这是一个真正的好习惯吗?
我想听听一些建议或替代方案来解决这个问题。我对于走在正确的轨道上有点困惑。
答案 0 :(得分:2)
如果您需要更多观点,您总是可以定义更多观看次数,这是Jackson JSON观点背后的理念,是什么使它成为现实柔性的。
如果您在视图类中使用通用名称,例如Basic
,Extended
,Public
,Private
等,那么您和#39;发现在多个bean中重用更容易。
您始终可以依赖继承 @JsonView
。请考虑以下Views.Private
扩展Views.Public
的示例:
public class Views {
interface Public {}
interface Private extends Public {}
}
使用@JsonView(Views.Private.class)
注释的属性的序列化还将包含使用@JsonView(Views.Public.class)
注释的属性。