2016-11-14 267 views
1

我想將一個JSON列表從一個活動發送到其他活動。我做這樣無法在Android中獲取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的:在com.example.data.mydata.onCreate

它打印Array但不是NameJsonObj 有什麼不對嗎?

+0

使用jsonobj.get(「姓名」),也許這將有助於 –

+2

你是什麼jsonList? Json數組或Java數組? –

+0

@MdAbdulGafur是對的。你在'jsonObj'中獲得的格式是什麼格式通過[pastie](http://pastie.org) – Praveenkumar

回答

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"); 
} 
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活動

0

爲什麼之間時您需要發送JsonList。最好爲你的List創建一個模型類。並使其可以放行。並將其發送給另一個活動

intent.putExtra(Key,yourModelClass);