将 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】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

这是不正确的。 JSON 具有通用数字类型,但可以包含普通整数,这取决于库是否公开为浮点数。最具体地说,大多数 Java JSON 库都能干净有效地处理这些问题。也许您对某些库有过不好的体验? 这根本不是真的。随机示例:json.org 实现在我描述的方式中被破坏了。无论如何,您可能都不想要一个“固定”的 JSON 库,因为那样它就会与 JavaScript 本身不兼容。

以上是关于将 JSON 字符串转换为 Java 对象或 HashMap的主要内容,如果未能解决你的问题,请参考以下文章

java将json字符串转换成对象批量存储数据

js 将json字符串转换为json对象或json对象转换成json字符串

java 怎么将对象转换成json字符串

Java对象数据与JSON对象数据之间的相互转换(fastjson)

JackSon将java对象转换为JSON字符串

将字符串(类似json格式)转换为对象或数组