Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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_Json - Fatal编程技术网

Java 无法正确解析JSON数组

Java 无法正确解析JSON数组,java,android,json,Java,Android,Json,我从一个webserveice得到以下字符串响应: [ [ { "dgtype": "adhoc", "subtypename": "Person", "subtypedesc": "null", "summary": "Junaid (Self)", "subtype": "person", "birthdate": "1995

我从一个webserveice得到以下
字符串
响应:

[
    [
        {
            "dgtype": "adhoc",
            "subtypename": "Person",
            "subtypedesc": "null",
            "summary": "Junaid (Self)",
            "subtype": "person",
            "birthdate": "1995-1-23 ",
            "name": "Junaid (Self)"
        },
        {
            "dgtype": "adhoc",
            "subtypename": "Job",
            "subtypedesc": "null",
            "summary": "Exa",
            "subtype": "person",
            "birthdate": "2010-01-30",
            "name": "Junaid (Self)"
        }
    ]
]
在Java中,我尝试执行以下操作:

JSONArray jArray = new JSONArray(result);  

                System.out.println("Response: "+jArray);

                for(int i = 0; i<= jArray.length(); i++){
                    try {
                        JSONObject oneObject = jArray.getJSONObject(i);

                        String dgtype = oneObject.getString("dgtype");
                        String subtypename = oneObject.getString("subtypename");
                        String subtypedesc = oneObject.getString("subtypedesc");
                        String summary = oneObject.getString("summary");
                        String subtype = oneObject.getString("subtype");
                        String birthdate = oneObject.getString("birthdate");
                        String name = oneObject.getString("name");

                        System.out.println(i);
                        System.out.println("dgtype: "+dgtype);
                        System.out.println("subtypename: "+subtypename);
                        System.out.println("subtypedesc: "+subtypedesc);
                        System.out.println("summary: "+summary);
                        System.out.println("subtype: "+subtype);
                        System.out.println("birthdate: "+birthdate);
                        System.out.println("name: "+name);




                    } catch (JSONException e) {
                        System.out.println("JSON Exception: "+e);
                    } 
                }

我正在举一个例子。我哪里做错了?还要注意异常代码段中缺少的长括号

您有两个阵列,一个在另一个阵列中:

[
   [
    //Your objects
   ]
]
您可以更改数据格式,使其只有一个数组,也可以修改代码:

JSONArray outer = new JSONArray(result);  
JSONArray jArray = outer.getJSONArray(0);

您有两个阵列,一个在另一个阵列中:

[
   [
    //Your objects
   ]
]
您可以更改数据格式,使其只有一个数组,也可以修改代码:

JSONArray outer = new JSONArray(result);  
JSONArray jArray = outer.getJSONArray(0);

jArray
JSONArray包含另一个
JSONArray
,其中包含
JSONObeject
,因此首先获取JSONArray,然后从中获取所有JSONObject:

        JSONArray oneArray = jArray.getJSONArray(i);
        for(int j = 0; j<= oneArray.length(); j++){
          JSONObject oneObject = oneArray.getJSONObject(j);
          // get dgtype,subtypename,subtypedesc,.. from oneObject
        }
JSONArray oneArray=jArray.getJSONArray(i);

对于(int j=0;j
jArray
JSONArray包含另一个
JSONArray
,其中包含
JSONObeject
,因此首先获取JSONArray,然后从中获取所有JSONObject:

        JSONArray oneArray = jArray.getJSONArray(i);
        for(int j = 0; j<= oneArray.length(); j++){
          JSONObject oneObject = oneArray.getJSONObject(j);
          // get dgtype,subtypename,subtypedesc,.. from oneObject
        }
JSONArray oneArray=jArray.getJSONArray(i);

对于(intj=0;j,正如它所说的,'JSONArray不能转换为JSONObject',在另一个数组中有一个数组,所以

JSONArray jArray1 = new JSONArray(result);  
然后


现在它可以工作了。

正如它所说,“JSONArray无法转换为JSONObject”,您在另一个数组中有一个数组,所以

JSONArray jArray1 = new JSONArray(result);  
              for(int i = 0; i<= jArray.length(); i++){
                  final JSONArray innerArray = jArray.getJSONArray(i);
                  for (int a = 0; a < innerArray.length(); a++) { 
                     try {
                        final JSONObject oneObject = innerArray.getJSONObject(i);    
                        String dgtype = oneObject.getString("dgtype");
                        String subtypename = oneObject.getString("subtypename");
                        String subtypedesc = oneObject.getString("subtypedesc");
                        String summary = oneObject.getString("summary");
                        String subtype = oneObject.getString("subtype");
                        String birthdate = oneObject.getString("birthdate");
                        String name = oneObject.getString("name");

                        System.out.println(i);
                        System.out.println("dgtype: "+dgtype);
                        System.out.println("subtypename: "+subtypename);
                        System.out.println("subtypedesc: "+subtypedesc);
                        System.out.println("summary: "+summary);
                        System.out.println("subtype: "+subtype);
                        System.out.println("birthdate: "+birthdate);
                        System.out.println("name: "+name);
                    } catch (JSONException e) {
                        System.out.println("JSON Exception: "+e);
                    } 
                }
             }
然后


现在它可以工作了。

for(int i=0;i
for(int i=0;我想我会改变数据格式,我刚刚意识到相同的!:)我想我会改变数据格式,我刚刚意识到相同的!:)
              for(int i = 0; i<= jArray.length(); i++){
                  final JSONArray innerArray = jArray.getJSONArray(i);
                  for (int a = 0; a < innerArray.length(); a++) { 
                     try {
                        final JSONObject oneObject = innerArray.getJSONObject(i);    
                        String dgtype = oneObject.getString("dgtype");
                        String subtypename = oneObject.getString("subtypename");
                        String subtypedesc = oneObject.getString("subtypedesc");
                        String summary = oneObject.getString("summary");
                        String subtype = oneObject.getString("subtype");
                        String birthdate = oneObject.getString("birthdate");
                        String name = oneObject.getString("name");

                        System.out.println(i);
                        System.out.println("dgtype: "+dgtype);
                        System.out.println("subtypename: "+subtypename);
                        System.out.println("subtypedesc: "+subtypedesc);
                        System.out.println("summary: "+summary);
                        System.out.println("subtype: "+subtype);
                        System.out.println("birthdate: "+birthdate);
                        System.out.println("name: "+name);
                    } catch (JSONException e) {
                        System.out.println("JSON Exception: "+e);
                    } 
                }
             }