2015-04-06 99 views
0

我正在做一個android項目。 這裏是我的JSON字符串看起來,從JSON結果中獲取數據

{"objectA":{"objectB","objectC","objectD":[{"Element1":"value1","Element2":"value2"}]}} 

我試圖讓objectD JSONArray

首先我JSON結果jsonStr variable.

JSONObject jsonObj = new JSONObject(jsonStr); 

然後我再補充一點objectD到JSONArray

JSONArray array1 = jsonObj.getJSONArray("objectD"); 

然後我試圖讓該數組的值

for (int i = 0; i < array1.length(); i++) { 

JSONObject c = array1.getJSONObject(i); 

String myString1 = c.getString("Element1"); 

String myString2 = c.getString("Element2"); 

//Then I put those to HashMap 

HashMap<String, String> p = new HashMap<String, String>(); 

p.put(Element1, myString1); 
p.put(Element2, myString2); 

ArrayList<HashMap<String, String>> q = new ArrayList<HashMap<String, String>>(); 

q.add(p); 

} 

當我正在調試我的代碼它顯示jsonStr有t他json字符串。

但是pq沒有值。

我如何得到這些值?

+0

移動'ArrayList > q = new new ArrayList >();'外部for循環 –

+0

我做到了。但它不起作用 - @ρяσѕρєяK – NoughT

+0

使用json數據時,我總是創建POJO對象,然後使用Jackson或Gson將數據轉換爲json格式或從json格式轉換數據。它使得它更容易,更容易出錯。我發現傑克遜更強大,但Gson更容易用於簡單情況。 –

回答

0

你提供的json是無效的json(jsonlint.com)。您的名稱爲objectB,objectC,它們沒有值。我不知道這將如何影響隨後的建議。
我有點驚訝的JSON沒有解析並拋出異常。也許它只是拋棄了壞的元素。

從你試圖獲得的json的'root'objectD;這根本不存在。你必須先得到objectA;然後獲得objectD

JSONObject objA = jsonObj.getJSONObject("objectA"); 
JSONArray arrD = objA.getJSONArray("objectD"); 

@GaryBak推薦使用Jackson或GSON的建議被附加。維護起來要容易得多。

至於調試;沒有價值的pq沒有告訴我們很多。 jsonObj是什麼? array1是什麼?您可以提供的信息越多,簡化了提供可能解決方案的過程。

+0

謝謝。 在你的幫助下,我做到了。 – NoughT