2015-05-26 104 views
3

我在Java设计一个程序,其中何时应该使用对象而不是json对象?

  1. 大量的对象都只是数据包和真的不要求任何非静态方法。

  2. 我想轻松地保存和加载硬盘中的物体。

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

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

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

+0

作为JSON存储绝对是一个很好的解决方案。虽然如果你没有在Java中为它们定义类,你将不会从静态类型中获得任何好处。 – bhspencer

+0

使用HashMap来保存这些值,并使用JSON库(如Jackson)从文件 –

+1

中读取如果您只是将对象视为纯数据,例如从A传输到B,JSON就没有问题。如果你想操纵/改变数据属性,如果你想直接访问里面的属性,转换为对象可以更简单。你也可以使用类似上面的库来简化它。所以这取决于你需要做多少操作。 – hitz

回答

1
  1. 大量的对象只是数据包,并不需要任何非静态方法。 这个数据会被多个类使用吗?你会修改上述数据吗?如果你回答是肯定的,那么我会创建一个对象。

  2. 我想轻松地保存和加载硬盘中的物体。 JSON是一个很好的方法来做到这一点,这里没有问题

  3. 对象的一些实例将需要一个额外的属性,我可能会随着时间的推移添加或取消。 JSON的设计是灵活的,因为这样,没有问题或理由,你为什么会需要这个

  4. 类/对象如果某些对象确实有额外的属性,那么我仍然把它们作为无二样大部分时间都是对象。 同样,没有问题,这里JSON是罚款

0

如果从一个Objective-C的/ PHP(或其他语言)字典,或其他类型的地图的到来,与键/值对是常见的。

但是在Java中,通常优先使用强类型对象:有时称为POJO(普通旧Java对象)。 Java是一种面向对象的语言,你可以从面向对象的概念中获益。对于非常小的应用程序来说并不总是显而易见的,但通常这是一条路。强类型对象涉及更多的锅炉代码,但任何现代IDE都会为你做(产生getters/setters)。所以这不是反对它的论点。

最重要的是,使用Jackson/GSon/Moxy将POJO对象从/存储到JSON是非常容易的。有很多好的JSON提供者/库与POJO一起工作,没有任何配置(或者很少)。

其他优点,我可以看到断手:

  • 当使用POJO IDE也会显示您可获取的getter/setter方法,而编码。

  • 今天,您可以将JSON存储在磁盘上的“对象”,明天您可以将它们存储在数据库中。您可以轻松地从Jackon序列化(或您首选的JSON库)切换到JPA,并附带一些注释。许多框架(JAX-RS,JPA,JAXB)都需要强类型对象,并且会使用反射或类似的方法来检查和处理对象。

相关问题