android - Android Klaxon 库:我无法处理复杂的 json 响应
问题描述
我在 android studio 中收到这样的 json 响应:
{
"status": "ok",
"data": {
idx:7397,
aqi:71,
time:{
v:1481396400,
s:"2016-12-10 19:00:00",
tz:"-06:00"
},
city:{
name:"Chi_sp, Illinois",
url:"https://aqicn.org/city/usa/illinois/chi_sp/",
geo:["41.913600","-87.723900"]
},
iaqi:{
pm25:{
v:71
}
},
forecast:{
daily: {
pm25: [{
avg: 154,
day: "2020-06-13",
max: 157,
min: 131
}, {
avg: 163,
day: "2020-06-14",
max: 173,
min: 137
}]
}
}
}
我想得到一些参数,比如aqi。我使用 Klaxon 库尝试了很多不同的方法,但没有一个结果。
解决方案
在 kotlin 中,您可以为复杂的 JSON 创建数据类,例如 -
class MyData<A>{
lateinit var status: String
var data : A? = null
}
class Data<B,C>{
lateinit var idx: String
lateinit var aqi: String
var time: B?= null
var city: C? = null
}
class Time{
lateinit var v: String
lateinit var s: String
lateinit var tz: String
}
class City{
lateinit var name: String
lateinit var url: String
lateinit var geo: List<String>
}
并与 klaxon 一起使用 -
val result = Klaxon().parse<MyData<Data<Time, City>>>(a)