从JSON结果中获取数据

时间:2015-04-06 16:11:04

标签: java android arrays json

我正在做一个android项目。 这是我的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有json字符串。

pq没有值。

我是如何获得这些价值的?

1 个答案:

答案 0 :(得分:0)

您提供的json不是有效的json(jsonlint.com)。您的名称objectBobjectC没有值。我不确切知道这将如何影响后续的建议 我有点惊讶于json没有解析并抛出异常。也许它只是破坏了坏元素。

来自&#39; root&#39;你试图得到的{json of json objectD;它根本不存在。你必须先得到objectA;然后得到objectD

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

@GaryBak建议使用Jackson或GSON是借调的。它更容易维护。

至于调试; pq没有价值观并没有告诉我们多少。 jsonObj持有什么; array1持有什么?您可以提供的信息越多,就可以简化提供可能解决方案的过程。