我在写一个android应用程序。我想跨意图/活动传递一些数据,并且我觉得从JSON到JSON的转换可能是此时更优化的一种方式。我可以使用JSONObject支持成功将java hashmap转换为json字符串。将JSON字符串转换为Java对象或HashMap
但是我需要将此JSON字符串转换回java对象或散列表。什么是最好的方式去做。
是否真的是一个值得去做的变化;如果我有简单的5场对象?在意图之间传输数据的其他方式有哪些?
干杯
我在写一个android应用程序。我想跨意图/活动传递一些数据,并且我觉得从JSON到JSON的转换可能是此时更优化的一种方式。我可以使用JSONObject支持成功将java hashmap转换为json字符串。将JSON字符串转换为Java对象或HashMap
但是我需要将此JSON字符串转换回java对象或散列表。什么是最好的方式去做。
是否真的是一个值得去做的变化;如果我有简单的5场对象?在意图之间传输数据的其他方式有哪些?
干杯
我建议挑选Gson了点。它对泛型和全功能的JavaBeans提供了出色的支持,并且真正简化了转换任务。在this answer你可以找到一个例子,一个Map<String, String>
转换成JSON,反之亦然;在this answer另一个例子,一个JSON字符串转换为fullworthy的Javabean(从JavaBean来JSON是gson.toJson(bean)
非常简单。
其他的方式来传输数据是XML和系列化,这两者比JSON更多的开销。
你可以通过Serializable
s的Intent
S,无需JSON。
为什么不使用Bundle
为您Map
?它可以放在一个Intent
轻松a nd基本上是一个荣耀的类型安全HashMap
。
如果你仍然需要使用JSON,我会建议Jackson。对于转换成Java对象和从Java对象转换(包括Maps
)
如果你有数字数据,JSON是一个特别糟糕的选择......它将破坏任何不能表示为双倍(甚至是一些双倍值)。除了必须与JavaScript通信的地方,您应该避免使用JSON。
这是不正确的。 JSON具有通用数字类型,但可以包含纯整数,并且它依赖于库是否暴露为浮点数。最具体地说,大多数Java JSON库都能够干净而高效地处理这些问题。 也许你对一些图书馆有不好的经验? – StaxMan 2010-04-05 20:03:00
,这根本不是真的。随机的例子:json.org的实现以我描述的方式被破坏。 无论如何,你可能不会想要一个“固定的”JSON库,因为那样它就会与JavaScript本身不兼容。 – 2010-05-09 16:29:36