【问题标题】:Convert JSON String to Java Object or HashMap将 JSON 字符串转换为 Java 对象或 HashMap
【发布时间】:2011-02-02 22:57:16
【问题描述】:

我正在编写一个安卓应用程序。我想在意图/活动之间传递一些数据,我觉得在这一点上与 JSON 之间的转换可能是一种更优化的方式。我能够使用 JSONObject 支持成功地将 java hashmap 转换为 json 字符串。

但是我需要将此 JSON 字符串转换回 Java 对象或哈希图。最好的方法是什么。

parcelable 真的是一个值得做的改变吗?如果我有简单的 5 字段对象?在意图之间传输数据的其他方法是什么。

干杯

【问题讨论】:

    标签: java android json


    【解决方案1】:

    我建议为此选择Gson。它对泛型和完全有价值的 Javabean 提供了出色的支持,并且真正简化了转换任务。在this answer 中,您可以找到一个将Map<String, String> 转换为JSON 的示例,反之亦然,在this answer 中,您可以找到另一个将JSON 字符串转换为完整Javabean 的示例(使用gson.toJson(bean) 从Javabean 到JSON 非常简单。

    其他传输数据的方式是 XML 和序列化,它们的开销都比 JSON 多。

    【讨论】:

      【解决方案2】:

      为什么不使用Bundle 作为您的Map?它可以很容易地放入Intent,基本上是一个美化的类型安全HashMap

      如果您仍需要使用 JSON,我会推荐 Jackson。与 Java 对象(包括Maps)之间的转换既简单又快速(比 GSON 更快)

      【讨论】:

        【解决方案3】:

        你可以用Intents 传递Serializables,不需要JSON。

        【讨论】:

          【解决方案4】:

          如果你有数字数据,JSON 是一个特别糟糕的选择……它会破坏任何不能表示为双精度的东西(甚至是一些双精度值)。除了必须与 JavaScript 通信的地方,你应该避免使用 JSON。

          【讨论】:

          • 这是不正确的。 JSON 具有通用数字类型,但可以包含普通整数,这取决于库是否公开为浮点数。最具体地说,大多数 Java JSON 库都能干净有效地处理这些问题。也许您对某些库有过不好的体验?
          • 这根本不是真的。随机示例:json.org 实现在我描述的方式中被破坏了。无论如何,您可能都不想要一个“固定”的 JSON 库,因为那样它就会与 JavaScript 本身不兼容。
          猜你喜欢
          • 1970-01-01
          • 2021-04-14
          • 2011-08-30
          • 1970-01-01
          • 2014-03-10
          • 1970-01-01
          • 2017-03-24
          • 2011-06-14
          相关资源
          最近更新 更多