我正在用Kotlin代码从json api获取数据。我可以正确解析数据以获取字符串值,但是解析数组列表会导致问题。
我的回复数据如下
{
"limit": "10",
"schedule": {
"0": ["0", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"1": ["1", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"2": ["2", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"3": ["3", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"4": ["4", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"5": ["5", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"],
"6": ["6", "3.00", "7.59", "9.00", "12.59", "14.00", "22.59"]
},
"target_temp": "32.18"
}
现在要检索值,例如target_temp我正在成功使用以下代码
val gson = GsonBuilder().create()
val target = gson.fromJson(body, data::class.java) println(target.target_temp)
我的班级代码很简单
class data(val target_temp: String)
现在,当我想访问时间表时,我得到了错误消息。
java.lang.IllegalStateException:应为BEGIN_ARRAY,但在第1行第50列路径$ .schedule中为BEGIN_OBJECT
我的检索时间表的代码如下。
val gson = GsonBuilder().create()
val schedule = gson.fromJson(body, schedule::class.java)
println(schedule.schedule.get(1))
计划的班级是
class schedule(val schedule: ArrayList<String>)
答案 0 :(得分:1)
在您的响应模型中,设置schedule
变量数据类型Map<String, List<String>>
而不是Schedule
类object
或List<String>
您的响应模型如下所示
data class ResponseModel(
val schedule: Map<String, List<String>>,
val target_temp: String
)
答案 1 :(得分:1)
计划的类型不是ArrayList<String
的类型Map<ArrayList<String>>
。
将时间表的定义更改为:
class schedule(val schedule: Map<String, ArrayList<String>>)
完整示例:
val gson = GsonBuilder().create()
val schedule = gson.fromJson(body, schedule::class.java)
println(schedule.schedule.get("0"))