如何访问命名对象内部的JSON数组?

时间:2019-04-17 09:08:38

标签: android json parsing

我正在构建一个用于显示学校时间表的Android应用,其中JSON数据来自URL。但是,JSON的格式需要的数组位于命名的“课程”对象内。如何获得对我需要的阵列的访问权限?

This is how my JSON looks

{
    "week": "2019-04-01",
    "times": {
        "1": "07:00-08:29",
        "2": "08:30-10:00",
        "3": "10:15-11:45",
        "4": "11:55-14:00",
        "5": "14:10-15:40",
        "6": "15:45-17:15",
        "7": "17:20-18:50",
        "8": "18:55-20:25",
        "9": "20:35-22:05",
        "lunch": "12:40-13:15"
    },
    "lessons": {
        "2019-04-01": [{
                "lesson": "2",
                "start": "08:30",
                "end": "10:00",
                "subject": "PHP",
                "group": "IS117",
                "teacher": "Jane Doe",
                "room": "A-222"
            }
        ]
    },
    "last update": "2019-03-28 17:02:02"
}

3 个答案:

答案 0 :(得分:0)

如果可能有帮助,请尝试以下代码。它将在2019-04-01数组中返回jsonObject。

new JSONObject("YOUR RESPONSE STRING HERE").getJSONObject("lessons").getJSONArray("2019-04-01").getJSONObject(0)

答案 1 :(得分:0)

JSONObject obj =新的JSONObject(“ StringFormat”); JSONArray jsonarray = obj.getJSONArray(“ 2019-04-01”);

答案 2 :(得分:0)

我建议您使用GSON库来简化生活,以防将来JSON响应变得更加复杂。它将所有JSON解析为普通的Java对象。

  • 首先在您的gradle中添加此依赖项: 实施'com.google.code.gson:gson:2.8.5'

  • 然后创建一个Java类,以表示预期的JSON结构。您可以使用此website自动为您生成Java类。您只需复制/插入JSON,它就会生成JAVA代码,以使用构造函数和getter / setter构造您的类。

  • 然后,您可以将接收到的JSON对象自动转换为Java类。

示例:

Gson gson = new Gson();
JavaClass object = gson.fromJson(jsonObject.toString(), JavaClass.class);
  • 然后只需轻松地从该java对象访问所需的任何内容,而无需手动解析收到的JSON对象。

N.B:我还建议您在那之后开始学习Retrofit网络库。在进行REST API调用时,它已被视为当今的标准。