Android使用JSONArray成员分配对象

时间:2011-07-06 05:15:19

标签: android json parcelable

我正在开发一个Android应用程序,我需要通过将我创建的Class的对象传入一个bundle来开始一个新活动,以便它可以在新活动中使用。

我已经研究过如何做到这一点,对于对象来说,最好的方法就是让它们成为Parcelable。但是,问题是该对象的类的一个字段是JSONArray类型,它似乎不支持JSONArray?或者也许我只是看不够努力或者我错过了什么,但我一直在寻找几个小时,但我仍然找不到任何东西。

更具体地说,我需要用

包裹我的对象的字段

writeX();

其中X可以包括整数,字符串等。但是,就像我刚才说的那样,我的一个字段是JSONArray类型由于某个特定原因(我不希望改变它)并且它看起来像Parcel不支持这个吗?

由于

3 个答案:

答案 0 :(得分:1)

感谢您的回复,但不幸的是,这个JSONArray包含太多不同的信息,因此它可以工作(它有整数字符串,JSONObjects甚至JSONArrays -_-)。然而,我找到了一种方法,这是通过使用toString方法将整个JSONArray转换为字符串。这使得它可以放入Bundle中。我真的不喜欢这样做......但是我没有太多时间思考这个问题太久了:P。不管怎样,谢谢

答案 1 :(得分:1)

我能够使用putSerializable而不是putParcelable将JSONObjects的ArrayList放入一个包中。

答案 2 :(得分:0)

您是否提前知道JSONArray的类型是什么?如果是这样,您可以将JSONArray转换为已知类型的List。

这里不支持JSONArray,因为它不是实现Parcelable的类。如果您完全无法控制JSONArray类型的选择,则需要将JSONArray转换为列表。

以下代码将已知String类型的JSONArray转换为ArrayList:

ArrayList<String> list = new ArrayList<String>();    
JSONArray jsonArray = (JSONArray)jsonObject;
if (jsonArray != null) {
   for (int i=0;i<jsonArray.size();i++){
    list.add(jsonArray.get(i).toString());
}