我无法从json获取数据

时间:2017-12-03 07:36:18

标签: android json

这是我的Json

{
    "2017": {
        "11": {
            "8": {
                "status": ""
            },
            "10": {
                "status": ""
            },
            "24": {
                "status": ""
            },
            "present": 0,
            "absent": 0
        },
        "12": {
            "1": {
                "status": ""
            },
            "2": {
                "status": ""
            },
            "present": 0,
            "absent": 0
        }
    }
}

在我上面的JSON 2017中是年份,11是月份,8是日期。 我一个月不能得到12。我只是到了第11个月,日期正好相反 当我从json

获取数据时,这就是我得到的

12-03 10:26:23.592 18581-18581 /? D /年:2017年

12-03 10:26:23.592 18581-18581 /? D /月:11

12-03 10:26:23.592 18581-18581 /? D / 16:24

12-03 10:26:23.592 18581-18581 /? D /标题:A

12-03 10:26:23.592 18581-18581 /? D / 16:10

12-03 10:26:23.592 18581-18581 /? D /标题:A

12-03 10:26:23.592 18581-18581 /? D / 16:8

12-03 10:26:23.592 18581-18581 /? D /标题:P

这是我为获取此

而编写的代码
try {
            JSONObject object = new JSONObject(response);
            Iterator iterator = object.keys();
            attendance_pojo pojo= new attendance_pojo();

            while (iterator.hasNext()) {
                String year = (String) iterator.next();
                pojo.setYear(year);

                Log.d("year", year);
                JSONObject obj = object.getJSONObject(year);
                Iterator iterator2 = obj.keys();


                while (iterator2.hasNext()) {

                    String month = (String) iterator2.next();
                    pojo.setMonth(month);
                    Log.d("month", month);
                    JSONObject ob = obj.getJSONObject(month);

                    Iterator iterator3 = ob.keys();

                        int datecntr=0;
                    while (iterator3.hasNext()) {
                        datecntr++;
                        String date = (String) iterator3.next();
                        pojo.setDate(date);
                        JSONObject ob1 = ob.getJSONObject(date);
                        Log.d("16", date);
                        String title = ob1.getString("status");
                        Log.d("title", title);
                    }
                    pojo.setDatecounter(datecntr);

                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }}

1 个答案:

答案 0 :(得分:1)

1)您正在尝试迭代包含两个对象的对象。您可能希望在数组中定义月份,如下所示:

2)返回的json元素的顺序是随机的,它们不是按结构的特定顺序排列。

{
    "2017": [
        "11": {
            "8": {
                "status": ""
            },
            "10": {
                "status": ""
            },
            "24": {
                "status": ""
            },
            "present": 0,
            "absent": 0
        },
        "12": {
            "1": {
                "status": ""
            },
            "2": {
                "status": ""
            },
            "present": 0,
            "absent": 0
        }
    ]
}