2010-03-31 143 views
2

我在写一个android应用程序。我想跨意图/活动传递一些数据,并且我觉得从JSON到JSON的转换可能是此时更优化的一种方式。我可以使用JSONObject支持成功将java hashmap转换为json字符串。将JSON字符串转换为Java对象或HashMap

但是我需要将此JSON字符串转换回java对象或散列表。什么是最好的方式去做。

是否真的是一个值得去做的变化;如果我有简单的5场对象?在意图之间传输数据的其他方式有哪些?

干杯

回答

5

我建议挑选Gson了点。它对泛型和全功能的JavaBeans提供了出色的支持,并且真正简化了转换任务。在this answer你可以找到一个例子,一个Map<String, String>转换成JSON,反之亦然;在this answer另一个例子,一个JSON字符串转换为fullworthy的Javabean(从JavaBean来JSON是gson.toJson(bean)非常简单。

其他的方式来传输数据是XML和系列化,这两者比JSON更多的开销。

2

你可以通过Serializable s的Intent S,无需JSON。

3

为什么不使用Bundle为您Map?它可以放在一个Intent轻松a nd基本上是一个荣耀的类型安全HashMap

如果你仍然需要使用JSON,我会建议Jackson。对于转换成Java对象和从Java对象转换(包括Maps

1

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

+0

这是不正确的。 JSON具有通用数字类型,但可以包含纯整数,并且它依赖于库是否暴露为浮点数。最具体地说,大多数Java JSON库都能够干净而高效地处理这些问题。 也许你对一些图书馆有不好的经验? – StaxMan 2010-04-05 20:03:00

+0

,这根本不是真的。随机的例子:json.org的实现以我描述的方式被破坏。 无论如何,你可能不会想要一个“固定的”JSON库,因为那样它就会与JavaScript本身不兼容。 – 2010-05-09 16:29:36