2015-04-06 98 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