我正在尝试在 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
我做错了什么? Gson不支持列表反序列化?
我复制了上面的内容,它对我有用。我建议确保
data
中的字符串与上面提供的 JSON 相同。
上传新版本为我解决了这个问题。