我想从一个活动向其他活动发送JSON
列表。我这样做了
发送
List<JSONObject> jsonList = new ArrayList<JSONObject>();
Intent i = new Intent(getApplicationContext(), AdapterContent.class);
Bundle b = new Bundle();
b.putString("Array",jsonList.toString());
i.putExtras(b);
接收
Bundle b = getIntent().getExtras();
String Array=b.getString("Array");
Log.i("TAG" ,Array);
JSONObject jsonobj = new JSONObject(Array);
Log.i("Name" , String.valueOf(jsonobj.getString("Name")));
JSON对象
[
{"Name":"Area1"},
{"Name":"Area 2"}
]
但它正在提示
W / System.err:at com.example.data.mydata.onCreate
正在Array
打印Name
而不是JsonObj
这里有什么不对吗?
答案 0 :(得分:2)
// make a json array
JSONArray jsonArr = new JSONArray(Array);
// empty containers for later use
JSONObject jobj;
String name=null;
// traverse all json object according to index of jsonarray
for(int i=0;i<jsonArr.length();i++){
// fetch jasonObject according to index
jobj=jsonArr.getJSONObject(i);
// get the name string from object and use it accordingly
name=jobj.optString("Name");
}
答案 1 :(得分:0)
你必须将json字符串转换为json数组而不是json对象
String Array = getIntent().getExtras().getString("Array");
Log.i("TAG" ,Array);
JSONArray jsonArr = new JSONArray(Array);
JSONObject jsonObj;
for(int i=0;i<jsonArr.length();i++){
jsonObj = jsonArr.getJSONObject(i);
Log.i("Name" , String.valueOf(jsonObj.getString("Name")));
}
注意:建议在活动之间传递时将数据序列化或转换为parcelable
答案 2 :(得分:0)
为什么需要发送JsonList
。最好为List创建一个模型类。并使其可分割。并将其发送到另一个活动
intent.putExtra(Key,yourModelClass);