Gson:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但在第1行第184列路径$.data处为STRING

问题描述 投票:0回答:2

我正在尝试在 Android 上使用 Google 的 Gson 和 Kotlin 来解析以下 json

{
    "status": 0,
    "msg": null,
    "data": {
        "timeTables": [
            {
                "type": "timetable",
                "startTime": "2021-12-13 11:00:00",
                "endTime": "2021-12-13 13:00:00",
                "location": "XXXX",
                "moduleCode": "XXXX",
                "staffName": "XXXX"
            },
            {
                "type": "timetable",
                "startTime": "2021-12-13 14:00:00",
                "endTime": "2021-12-13 16:00:00",
                "location": "XXXX",
                "moduleCode": "XXXX",
                "staffName": "XXXX"
            },
            {
                "type": "timetable",
                "startTime": "2021-12-13 16:00:00",
                "endTime": "2021-12-13 18:00:00",
                "location": "XXXX",
                "moduleCode": "XXXX",
                "staffName": "XXXX"
            }
        ]
    },
    "success": true
}

我使用的型号和代码如下所示:

import com.google.gson.annotations.SerializedName

class TimeTableModel {
    @SerializedName("status")
    val status = 0

    @SerializedName("message", alternate = ["msg"])
    val message : String? = ""

    @SerializedName("success")
    val success = false

    @SerializedName("data")
    val data : TimeTableData = TimeTableData()
}

class TimeTableData {
    @SerializedName("timeTables")
    val timeTables : List<TimeTableListData> = emptyList()
}

class TimeTableListData {
    @SerializedName("startTime")
    val startTime = ""

    @SerializedName("endTime")
    val endTime = ""

    @SerializedName("location")
    val location = ""

    @SerializedName("moduleCode")
    val moduleCode = ""

    @SerializedName("staffName")
    val staffName = ""
}
fun getTimetable() {
    val data = get("$baseAddress/userTimeTable/findCalendarMessage")
    return Gson().fromJson(data, TimeTableModel::class.java) // data is the json above
}

我希望它能够正常工作,但是每次反序列化时都会引发异常:
Gson:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但在第1行第184列路径$.data

处为STRING

我做错了什么? Gson不支持列表反序列化?

android json kotlin gson json-deserialization
2个回答
1
投票

我复制了上面的内容,它对我有用。我建议确保

data
中的字符串与上面提供的 JSON 相同。


0
投票

上传新版本为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.