org.json.JSONObject vs Gson库JsonObject

时间:2017-03-07 06:05:23

标签: android json gson android-json

这两个班级有什么区别?

如果有人使用Gson库,最好使用 com.google.json.JsonObject 而不是 org.json.JSONObject

有人能列出这两个选择的优缺点吗?

3 个答案:

答案 0 :(得分:10)

市场上有许多JSON实现,其中大多数都是开源的。每个人都有其特定的优点和缺点。

  • Google GSON
  • 杰克逊
  • org.json等。

Google GSON click正式文件

  • 提供简单的toJson()和fromJson()方法将Java对象转换为JSON,反之亦然
  • 允许将预先存在的不可修改对象转换为JSON
  • 对Java Generics的广泛支持
  • 允许对象的自定义表示
  • 支持任意复杂的对象(具有深层继承层次结构和广泛使用泛型类型)

杰克逊 click正式文件

  • Streaming API或增量解析/生成:将JSON内容作为离散事件读取和写入
  • 树模型:提供JSON文档的可变内存树表示
  • 数据绑定:将JSON转换为POJO的

一些比较博客点击此处blogs1blog2

我个人使用GSON vs Jackson vs Simple JSON

完成序列化和反序列化的基准测试
  • 非常小的对象:Google gson比Jackson和Simple JSON执行速度快
  • 大型对象:Google gson比Jackson和Simple JSON执行速度更快

答案 1 :(得分:6)

以下是主要区别:

1)GSON可以使用Object定义直接创建所需类型的对象。需要手动解析JSONObject。

2)org.json是一个简单的树型API。它最大的缺点是它需要您在解析之前将整个JSON文档加载到字符串中。对于大型JSON文档,这可能效率低下。

3)到目前为止,org.json实现的最大弱点是JSONException。在所有JSON内容周围放置一个try / catch块是不方便的。

4)Gson是Android上JSON解析的最佳API。它具有非常小的二进制大小(低于200 KiB),具有快速数据绑定,并且具有简单易用的API。

5)GSON和Jackson是在Java世界中管理JSON数据的最流行的解决方案。

答案 2 :(得分:0)

我在真实的 Pixel 3 设备 Android 11 上对 456 Kb json 文件进行了实验。 我需要从数据库创建一个备份文件。模型有 3 个具有一对多关系的对象:Note、Item、Alarm。

Note -> fields and List<Item>.
Item -> fields and List<Alarm>.
Alarm -> fields

Serialization result:
gson -> 75ms; org.json -> 63ms
gson -> 83ms; org.json -> 67ms
gson -> 73ms; org.json -> 62ms

如您所见,默认的 android org.json 比 GSON 快。 如果您有时间为您的模型创建映射,我建议您使用默认的 org.json。 如果您想创建 json 比 gson 更快,但比 org.json 更容易,请尝试使用 moshi 或 kotlinx 序列化。