如何在不使用Gson的情况下将JSON转换为数组

3

我有一个JSON对象:

{"home_device_name":"light","light_status":[{"id_light":"1","status":"1"},{"id_light":"2","status":"0"}]}

我读取它作为一个JSON对象,但我无法访问“light_status”,我想将其转换为数组以便能够读取它。

我将其翻译为:

我读取的是一个JSON对象,但我无法访问“light_status”。我想将其转换为数组以便于读取。


1
如果你想在 Kotlin 中读取它,你真的应该使用像 Gson 或 Jackson 这样的 Json 解析器。 - Impulse The Fox
为什么不将light_status作为一个JSON数组,并遍历每个对象,手动将它们转换为您所需的列表呢? - Omid Heshmatinia
light_status已经以可读格式存在。展示一下你如何读取JSON的代码。 - matin sayyad
可能有点傻,但是你为什么不想使用Gson呢? - Arthur Attout
2个回答

2
使用以下代码:
    String str = "{\"home_device_name\":\"light\",\"light_status\":[{\"id_light\":\"1\",\"status\":\"1\"},{\"id_light\":\"2\",\"status\":\"0\"}]}";

    try {
        JSONObject jsonObject = new JSONObject(str);

        String home_device_name = jsonObject.getString("home_device_name");

        JSONArray jsonArray = jsonObject.getJSONArray("light_status");

        for (int i = 0; i < jsonArray.length(); i++) {
            String id_light = jsonArray.getJSONObject(i).getString("id_light");
            String status = jsonArray.getJSONObject(i).getString("status");

            Log.d("Value", "Pos = " + i + " id_light = " + id_light + " status = " + status);
        }


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

1
我认为他期望用 Kotlin 得到一个答案。 - Somesh Kumar

0

首先将以下模型添加到您的项目中

    class LightStatus {

    var idLight: String? = null
    var status: String? = null

}

现在,您可以使用以下代码获取光线数组

    fun getLightArray() :ArrayList<LightStatus>{
    val jsonString = "{\"home_device_name\":\"light\",\"light_status\":[{\"id_light\":\"1\",\"status\":\"1\"},{\"id_light\":\"2\",\"status\":\"0\"}]}";
    val jsonObject=JSONObject(jsonString)
    val jsonArray =jsonObject.getJSONArray("light_status")
    val lightArray =ArrayList<LightStatus>()

    for (i in 0..jsonArray.length()-1){
        val lightStatus=LightStatus()
        lightStatus.idLight=jsonArray.getJSONObject(i).getString("id_light")
        lightStatus.status=jsonArray.getJSONObject(i).getString("status")
        lightArray.add(lightStatus)
    }
    return lightArray
}

谢谢,从我的端口来看它正在工作。 - Bhavesh Vadalia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接