首页 > 解决方案 > 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 库尝试了很多不同的方法,但没有一个结果。

标签: androidjsonobjecthttpresponseklaxon

解决方案


在 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)

推荐阅读