2015-06-23 219 views
1

我想從JSONObject中獲取一個字符串。閱讀Java中的JSON二維數組

我的JSON是這樣的:

{ 
    "agent": 
    [ 
     {"name":"stringName1", "value":"stringValue1"}, 
     {"name":"stringName2", "value":"stringValue2"} 
    ] 
} 

我想從字符串名稱和字符串名稱的值。所以首先,我試圖讓這個「代理商」使用這個:

JSONObject agent = (JSONObject) jsonObject.get("agent"); 

但是,這會引發一個錯誤。

你有什麼想法如何處理?

+0

「agent」是JSONArray。 'jsonObject.optJSONArray(「agent」);' – Blackbelt

回答

3

您正在嘗試將JSON數組解析爲JSON對象。當然,它會給你錯誤。

試試這個:

JSONArray agent = jsonObject.getJsonArray("agent"); 

// To get the actual values, you can do this: 
for(int i = 0; i < agent.size(); i++) { 
    JSONObject object = agent.get(i); 
    String value1 = object.get("name"); 
    String value2 = object.get("value"); 
} 
+1

爲了得到數組中的元素,使用'get(int)'方法。像:'agent.get(0);'。 – Mauker

+1

感謝您的幫助!我不得不改變一些代碼,但它的工作原理!我把'agent.size()'改成'agent.length()'和'object.get(「name」)''變成'object.getString(「name」)''。 –

+0

很高興工作!不客氣,夥計。 – ridsatrio

0
String Json=" { agent: [ {name:stringName1, value:stringValue1},{name:stringName2, value:stringValue2}]}"; 

您在到JSONObject的解析Jsonarray這就是爲什麼你得到錯誤。

JSONObject obj = new JSONObject(Json); 
JSONArray array = obj.getJSONArray("agent"); 

for(int i = 0 ; i < array.length() ; i++) 
     { 
    String strngNameOne=array.getJSONObject(i).getString("name"); 
    String stringNameTwo=array.getJSONObject(i).getString("value"); 
    //System.out.println(array.getJSONObject(i)); 
     }