Java 在某些节点(而不是所有节点)的数组中解析JSON数组

Java 在某些节点(而不是所有节点)的数组中解析JSON数组,java,android,json,Java,Android,Json,我有一个包含嵌套JSON数组的JSON响应,我想对其进行解析。 这是一个非常直截了当的JSON响应,但有一点变化。 我得到的响应被构造为一个JSONarray,该数组中有少量值。在某些元素中,该值包含一个嵌套的JSONarray,并具有另一组数据 现在,解析这个JSON非常简单,我能够以正确的顺序获取数据 这是一个JSON示例(如果格式不正确,请道歉-这只是一个示例): { "responseCode": "200", "responseMessage": "OK", "

我有一个包含嵌套JSON数组的JSON响应,我想对其进行解析。

这是一个非常直截了当的JSON响应,但有一点变化。 我得到的响应被构造为一个JSONarray,该数组中有少量值。在某些元素中,该值包含一个嵌套的JSONarray,并具有另一组数据

现在,解析这个JSON非常简单,我能够以正确的顺序获取数据

这是一个JSON示例(如果格式不正确,请道歉-这只是一个示例):

{
    "responseCode": "200",
    "responseMessage": "OK",
    "value_set": 
               [
                   {
                       "sample": "value",
                       "sample1": "value1",
                       "sample2": "value2",
                       "sample3": "value3",
                       "sample4": "value4",
                       "sample5": "value5"
                    },
                    {
                        "sample": "value",
                        "sample1": "value1",
                        "sample2": "value2",
                        "sample3": "value3",
                        "sample4": "value4",
                        "sample5": "value5"
                     },
                     {
                        "sample": "value",
                        "sample1": "value2",
                        "new_sample_data": 
                                         [
                                             {
                                                 "abc": "some_value",
                                                 "def": "some_value1",
                                                 "ghi": "some_value2",
                                                 "jkl": "some_value3",
                                                 "unique_data": "some_unique_value"
                                              },
                                         ],
                     },
                     {
                         "sample": "value",
                         "sample1": "value1",
                         "sample2": "value2",
                         "sample3": "value3",
                         "sample4": "value4",
                         "sample5": "value5"
                      },
                 ],
}
现在,为了分析整个事情,我是这样做的:

JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set"); 

for(int i=0;i<jsonArray.length();i++){

    JSONObject object = jsonArray.getJSONObject(i);

    if(object!=null){

    String sampleString = object.getString("sample");
    String sampleString1 = object.getString("sample1");

    //Till this point, the values are ok.    

}

} 
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);

对于(int i=0;i您可以使用
has
方法
JSONObject
例如:


如果这个格式是固定的,那么你必须设置如下条件

    JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set"); 

for(int i=0;i<jsonArray.length();i++){

    JSONObject object = jsonArray.getJSONObject(i);

    if(object!=null){

    String sampleString = object.getString("sample");
    String sampleString1 = object.getString("sample1");

if(i==2) {
JSONArray jsonArrayNewSampleData = responseObject.getJSONObject().getJSONArray("new_sample_data"); 
}
    //Till this point, the values are ok.    

}

} 
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);

对于(int i=0;i,因为
新的样本数据
JSONArray
值集的每个JSONObject中都不可用

使用并检查
new\u sample\u data
键是否在当前JSONObject中可用。如果可用,则以与当前对
value\u set
JSONArray相同的方式从
new\u sample\u data
JSONArray获取所有值:

if(object.has("new_sample_data")){
            if(!object.isNull("new_sample_data")){
               // get JSONObject's from JSONArray
            }
}
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);

对于(int i=0;i原因为否决投票!!lol您可以检查,如果JsonObject的长度=6,这意味着它不包含数组,否则包含数组所以检查“{”和“[”…但是还有其他更有效的方法吗?如果你想自己做,唯一的方法是进行常规检查,因为你不想使用librarylet me write循环。如果节点已修复,将来将很难管理。仍然+1..此解决方案也会起作用
if(object.has("new_sample_data")){
            if(!object.isNull("new_sample_data")){
               // get JSONObject's from JSONArray
            }
}
JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set"); 

for(int i=0;i<jsonArray.length();i++){

JSONObject object = jsonArray.getJSONObject(i);

if (object.length == 6){

    if(object!=null){

        String sampleString = object.getString("sample");
        String sampleString1 = object.getString("sample1");
        ....
    }

}
else{
    if(object!=null){

    String sampleString = object.getString("sample");
    String sampleString1 = object.getString("sample1");
    //parse array new_sample_data
    }

//Till this point, the values are ok.    

}

}