Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSON结果中获取数据_Java_Android_Arrays_Json - Fatal编程技术网

Java 从JSON结果中获取数据

Java 从JSON结果中获取数据,java,android,arrays,json,Java,Android,Arrays,Json,我正在做一个android项目。 这是我的json字符串外观 {"objectA":{"objectB","objectC","objectD":[{"Element1":"value1","Element2":"value2"}]}} 我试图得到反对JSONArray 首先,我得到了jsonStr变量的JSON结果 然后我将objectD添加到JSONArray 然后我尝试获取该数组的值 for (int i = 0; i < array1.length(); i++) { JSON

我正在做一个android项目。 这是我的json字符串外观

{"objectA":{"objectB","objectC","objectD":[{"Element1":"value1","Element2":"value2"}]}}
我试图得到反对JSONArray

首先,我得到了jsonStr变量的JSON结果

然后我将objectD添加到JSONArray

然后我尝试获取该数组的值

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没有值


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

您提供的json不是有效的json。您的名称objectB和objectC没有值。我不知道这将如何影响后续的建议。 我有点惊讶json没有解析并抛出异常。也许它只是把不好的元素扔掉了

您试图从json的“根”获取objectD;它根本不存在。你必须先得到objectA;那就反对吧

@GaryBak推荐使用Jackson或GSON是附议的。它更容易维护


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

Move ArrayList q=new ArrayList;我是在外面做的。但它不起作用-@ρ∑ѕρєk在处理json数据时,我总是创建POJO对象,然后使用Jackson或Gson将数据转换为json格式。它使它变得更容易,更不容易出错。我发现Jackson更强大,但Gson更容易用于简单的情况。有人能在这方面提供帮助吗??
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);

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