【发布时间】:2017-03-07 06:05:22
【问题描述】:
这两个类有什么区别?
如果有人使用 Gson 库,是否最好使用 com.google.json.JsonObject 而不是 org.json.JSONObject?
谁能列出这两种选择的优缺点?
【问题讨论】:
标签: android json gson android-json
这两个类有什么区别?
如果有人使用 Gson 库,是否最好使用 com.google.json.JsonObject 而不是 org.json.JSONObject?
谁能列出这两种选择的优缺点?
【问题讨论】:
标签: android json gson android-json
主要区别如下:
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 数据最流行的解决方案。
【讨论】:
市场上有许多 JSON 实现,其中大部分是开源的。每一种都有特定的优点和缺点。
Google GSON click 获取官方文档
Jacksonclick获取官方文件
我个人使用 GSON vs Jackson vs Simple JSON 进行了序列化和反序列化的基准测试
【讨论】:
我在真正的 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。 如果您想比 gson 更快地创建 json,但比 org.json 更容易,请尝试使用 moshi 或 kotlinx-serialization。
【讨论】: