无法在Android中获取JSON数据

时间:2016-11-14 04:35:00

标签: android json

我想从一个活动向其他活动发送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 这里有什么不对吗?

3 个答案:

答案 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);