(Android)Java:JSON解析

(Android)Java:JSON解析,android,json,Android,Json,我在这里找到了很多教程,介绍了如何解析JSON数组的JSON数据 但是我的JSON文件对我来说有点复杂。其结构如下: JSON文件摘录 Java代码摘录 信息:我在另一个活动中使用HTTP GET将json解析为json JSONObject dataJsonData = json.getJSONObject("data").getJSONObject("schedule_id"); 现在,我将使用for循环解析ID: ArrayList<String> parsedNameLis

我在这里找到了很多教程,介绍了如何解析JSON数组的JSON数据

但是我的JSON文件对我来说有点复杂。其结构如下:

JSON文件摘录 Java代码摘录 信息:我在另一个活动中使用HTTP GET将json解析为json

JSONObject dataJsonData = json.getJSONObject("data").getJSONObject("schedule_id");
现在,我将使用for循环解析ID:

ArrayList<String> parsedNameList = new ArrayList<String>();

for (int i = 0; i < idontknow; i++) {
    String s = new Integer(i).toString();
    parsedNameList.add(dateJsonData.getJSONObject(i).getString("name"));
}
这会将名称的每个值添加到ArrayList中

但有两个问题: 1.计划ID混乱且不完整。例如,没有id 0,与给定的json一样,缺少id 13、14、15、16。 2.计划ID将每天更改,并且将混合使用

所以我不认为我可以使用预定义的整数I,因为有些整数不是schedule_id。我可以使用这个循环,并忽略ArrayList中的空条目,但JSON包含200多个id-我认为如果有其他方法通过这个JSON进行解析,效率会更高

我找到了一些关于getJSONArray方法的信息,但是d_ID是数组,而不是schedule_ID

有人有主意吗?getString方法的参数是否有占位符


请原谅我的英语,我来自德国:

我想这应该行

Iterator keys = dataJsonData.keys();

while(keys.hasNext()) {
    // loop to get the dynamic key
    String currentDynamicKey = (String)keys.next();

    // get the value of the dynamic key
    String currentDynamicValue = dataJsonData .getString(currentDynamicKey);
    parsedJsonList.add(currentDynamicValue );
}

来源:

根据您的上下文,如果您可以访问web服务,最好更改json结构

请求json结构如下所示

 {
    "data":{
        "schedule":[
            {
                "id":12,
                "name":"CP",
                "d_id":[
                    "7"
                ]
            },
            {
                "id":12,
                "name":"CP",
                "d_id":[
                    "7",
                    "88"
                ]
            },
            {
                "id":200,
                "name":"AT",
                "d_id":[
                    "7",
                    "88"
                ]
            }
        ]
    }
}
否则,过多的迭代会降低CPU的速度。

Offtopic:您可以使用来美化JSON代码。
 {
    "data":{
        "schedule":[
            {
                "id":12,
                "name":"CP",
                "d_id":[
                    "7"
                ]
            },
            {
                "id":12,
                "name":"CP",
                "d_id":[
                    "7",
                    "88"
                ]
            },
            {
                "id":200,
                "name":"AT",
                "d_id":[
                    "7",
                    "88"
                ]
            }
        ]
    }
}