我正在做一个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字符串。
但p
和q
没有值。
我是如何获得这些价值的?
答案 0 :(得分:0)
您提供的json不是有效的json(jsonlint.com)。您的名称objectB
,objectC
没有值。我不确切知道这将如何影响后续的建议
我有点惊讶于json没有解析并抛出异常。也许它只是破坏了坏元素。
来自&#39; root&#39;你试图得到的{json of json objectD
;它根本不存在。你必须先得到objectA
;然后得到objectD
。
JSONObject objA = jsonObj.getJSONObject("objectA");
JSONArray arrD = objA.getJSONArray("objectD");
@GaryBak建议使用Jackson或GSON是借调的。它更容易维护。
至于调试; p
和q
没有价值观并没有告诉我们多少。 jsonObj
持有什么; array1
持有什么?您可以提供的信息越多,就可以简化提供可能解决方案的过程。