Gson:java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 184 列路径 $.data 处为 STRING
Gson: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 184 path $.data
我正在尝试使用 Google 的 Gson 和 android
上的 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不支持列表反序列化?
我复制了上面的内容,对我有用。我建议确保 data
中的字符串与上面提供的 JSON 相同。
我正在尝试使用 Google 的 Gson 和 android
上的 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 相同。