gpt4 book ai didi

java - 是否存在将 Java 对象序列化为 JSON 的模式?

转载 作者:行者123 更新时间:2023-11-30 11:15:30 25 4
gpt4 key购买 nike

这个问题不涉及如何将 Java 对象序列化为 JSON 表示的具体细节,而是涉及将 Java 对象序列化为 JSON 的可扩展且可测试的模式。我维护的系统具有关于对象序列化的不同粒度级别的概念。例如,系统有一个Project的概念。 Project 具有以下字段:

  • 姓名
  • 描述
  • 所有者
  • 任务列表
  • 更改历史记录
  • 其他元数据

序列化 Project 列表时,只返回“摘要”信息很有用:

  • 姓名
  • 描述
  • 所有者

省略更详细的内容。但是,当请求单个 Project 时,将返回一个包含所有内容的“详细” View 。系统中的大多数对象都有摘要 View 和详细 View 的概念,但我发现在大多数情况下,我要么返回太多信息,要么返回太少信息。

为了处理为哪个 View 返回哪些属性,我简单地注释了类,并描述了一个summary 和一个detail View :

@Json(summary = { "name", "description", "owner" },
detail = { "name", "description", "owner", "tasks", "changes", ... }
class Project {
private String name;
...
}

这工作得很好,但正如我上面提到的,我发现在大多数情况下,我要么返回太多,要么返回太少。我很想知道存在什么样的模式可以灵活地获取我需要的数据。如果我发现我需要返回我的数据的不同表示,我做错了吗?我应该选择一定数量的对象表示并坚持下去吗?感谢您的帮助。

最佳答案

您可以将子类化与自动序列化框架结合使用。例如使用 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;
...
}

这种方法允许多个级别的详细信息,但会强制您将类用作简单记录。

关于java - 是否存在将 Java 对象序列化为 JSON 的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com