java - 什么时候应该使用对象而不是 json 对象?

标签 java oop object json

我正在用java设计一个程序

  1. 很多对象只是数据包,实际上并不需要任何非静态方法。

  2. 我想轻松地从硬盘保存和加载对象。

  3. 一些对象实例需要一个额外的属性,我可能会随着时间的推移添加或删除这些属性。

  4. 如果某些对象确实具有额外的属性,那么大多数时候我仍会将它们视为完全相同类型的对象。

似乎一个很好的解决方案是在运行时以 JSON 格式存储这些对象,而不是真正为它们定义专用对象。您有什么理由不想这样做吗?即,是否有任何理由认为以 json 格式存储对象只是为了方便?

最佳答案

如果您来自 Objective-C/PHP(或其他一些语言)字典或其他类型的 map ,键/值对很常见。

但在 Java 中,通常首选强类型对象:有时称为 POJO(普通旧 Java 对象)。 Java 是一种面向对象的语言,您可以从 OO 概念中获益。对于非常小的应用程序并不总是很明显,但通常这是可行的方法。强类型对象涉及更多样板代码,但任何现代 IDE 都会为您完成(生成 getters/setters)。所以这不是反对它的理由。

最重要的是,使用 Jackson/GSon/Moxy 将 POJO 对象从 JSON 存储到 JSON 是非常容易的。有许多优秀的 JSON 提供程序/库可以在没有任何配置(或很少)的情况下使用 POJO。

我可以立即看到的其他优点:

  • 使用 pojo IDE 时还会在编码时显示可用的 getters/setters。

  • 今天您可以将“对象”以 JSON 格式存储在磁盘上,明天您可能会将它们存储在数据库中。您可以使用几组注释轻松地从 Jackon 序列化(或您首选的 JSON 库)切换到 JPA。

  • 许多框架(JAX-RS、JPA、JAXB)需要强类型对象,并将使用反射或类似方法来检查和处理您的对象。

关于java - 什么时候应该使用对象而不是 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30468473/

相关文章:

javascript - 为什么我不能在回调中引用我的 jQuery 对象?

javascript - 数组值的更改更改此数组的前一个克隆

java - Sightly 组件找不到捆绑的 WCMUse(Pojo)

java - 使用java获取REST Web服务中http请求的内容

java - LWJGL .OBJ 文件读取器有时会导致文件变形或不渲染文件

c# - 如何将 ListItemCollection (dropdownlist.items) 转换为字典<string,string>?

java - 为不同的对象动态生成表

java - 跨所有本地化格式识别所有数字的正则表达式

java - 设计运行时在两个实现类之间进行选择

JavaScript:创建一个返回数组频率分布的函数