应该何时使用对象而不是json对象?

时间:2015-05-26 20:40:32

标签: java json oop object jsonobject

我正在用java设计一个程序

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

  2. 我想轻松保存并加载硬盘中的对象。

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

  4. 如果某些对象确实有其他属性,那么我仍会在大多数情况下将它们视为完全相同的对象。

  5. 对此来说,一个好的解决方案似乎是在运行时以JSON格式存储这些对象,而从不为它们实际定义专用对象。你有什么理由不想这样做吗?也就是说,为了方便起见,以json格式存储对象是不是很糟糕?

2 个答案:

答案 0 :(得分:1)

  1. 许多对象只是数据包,并不需要任何非静态方法。 这些数据会被多个类使用吗?你会修改上述数据吗?如果您对其中任何一个回答“是”,那么我会创建一个对象。

  2. 我想从硬盘轻松保存和加载对象。 JSON是一种很好的方法,这里没有问题

  3. 某些对象实例需要一个额外的属性,我可能会随着时间的推移添加或删除。 JSON旨在提供灵活性,没有问题或理由为什么您需要一个类/对象

  4. 如果某些对象确实有其他属性,那么我仍然会在大多数情况下将它们视为完全相同的对象。 同样,这里没有问题JSON很好

答案 1 :(得分:0)

如果您来自Objective-C / PHP(或其他语言)词典或其他类型的地图,则键/值对很常见。

但在Java中,通常首选强类型对象:有时称为POJO(Plain Old Java Objects)。 Java是一种面向对象的语言,您可以从OO概念中获益。对于非常小的应用程序来说并不总是显而易见的,但通常它是要走的路。强类型对象涉及更多锅炉板代码,但任何现代IDE都会为您做(生成getter / setter)。所以这不是反对它的论据。

除此之外,使用Jackson / GSon / Moxy将POJO对象存储到JSON是非常容易的。有很多很好的JSON提供程序/库可以在没有任何配置的情况下使用POJO(或者很少)。

我可以看到的其他优点:

  • 使用pojo IDE时,还会在编码时显示可用的getter / setter。

  • 今天你可以将你的“对象”存储在磁盘上的JSON中,明天你可以将它们存储在数据库中。您可以通过一些注释轻松地从Jackon序列化(或您首选的JSON库)切换到JPA。

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