这个问题与关于如何将Java对象序列化为JSON表示的确切细节无关,而是与用于将Java对象序列化为JSON的可伸缩且可测试的模式有关。我正在维护的系统具有关于对象序列化的不同粒度级别的概念。例如,系统具有Project
的概念。 Project
包含以下字段:
序列化Project
列表时,仅返回“摘要”信息很有用:
省略更详细的内容。但是,当请求单个Project
时,将返回包含所有内容的“详细”视图。系统中的大多数对象都有摘要和详细视图的概念,但我发现在大多数情况下,我要么返回太多或太少的信息。
要处理为哪个视图返回哪些属性,我只是对该类进行了注释,并描述了summary
和detail
视图:
@Json(summary = { "name", "description", "owner" },
detail = { "name", "description", "owner", "tasks", "changes", ... }
class Project {
private String name;
...
}
这很有效,但正如我上面提到的,我发现在大多数情况下,我要么回归太多,要么太少。我很想看看有哪种模式可以灵活地获取我需要的数据。如果我发现我需要返回我的数据的不同表示,我是否做错了?我应该选择一定数量的对象表示并坚持下去吗?谢谢你的帮助。
答案 0 :(得分:1)
您可以将子类化与自动序列化框架一起使用。例如,使用JAXB(支持JSON和XML):
class DetailSummary {
public @XmlElement String name;
public @XmlElement String description;
public @XmlElement String owner;
}
class Detail extends DetailSummary {
public @XmlElement List<Task> tasks;
...
}
此方法允许多个级别的详细信息,但强制您将类用作简单记录。