将 JSON 字符串转换为 Java 对象或 HashMap
Posted
技术标签:
【中文标题】将 JSON 字符串转换为 Java 对象或 HashMap【英文标题】:Convert JSON String to Java Object or HashMap 【发布时间】:2011-02-02 22:57:16 【问题描述】:我正在编写一个安卓应用程序。我想在意图/活动之间传递一些数据,我觉得在这一点上与 JSON 之间的转换可能是一种更优化的方式。我能够使用 JSONObject 支持成功地将 java hashmap 转换为 json 字符串。
但是我需要将此 JSON 字符串转换回 Java 对象或哈希图。最好的方法是什么。
parcelable 真的是一个值得做的改变吗?如果我有简单的 5 字段对象?在意图之间传输数据的其他方法是什么。
干杯
【问题讨论】:
【参考方案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】:你可以用Intent
s 传递Serializable
s,不需要JSON。
【讨论】:
【参考方案4】:如果你有数字数据,JSON 是一个特别糟糕的选择……它会破坏任何不能表示为双精度的东西(甚至是一些双精度值)。除了必须与 javascript 通信的地方,你应该避免使用 JSON。
【讨论】:
这是不正确的。 JSON 具有通用数字类型,但可以包含普通整数,这取决于库是否公开为浮点数。最具体地说,大多数 Java JSON 库都能干净有效地处理这些问题。也许您对某些库有过不好的体验? 这根本不是真的。随机示例:json.org 实现在我描述的方式中被破坏了。无论如何,您可能都不想要一个“固定”的 JSON 库,因为那样它就会与 JavaScript 本身不兼容。以上是关于将 JSON 字符串转换为 Java 对象或 HashMap的主要内容,如果未能解决你的问题,请参考以下文章
js 将json字符串转换为json对象或json对象转换成json字符串