我读了 API 的响应,它返回一个像这样的 JSON 对象
{
"companies": [{
"id": 9,
"label": "Name A"
}, {
"id": 13,
"label": "Name B"
}, {
"id": 14,
"label": "Name C"
}],
"types": [{
"id": 1,
"label": "Music"
}, {
"id": 2,
"label": "Theater"
}],
"shows": [{
"id": 1,
"company": 9,
"label": "Label XX",
"type": 1
}, {
"id": 2,
"company": 13,
"label": "Label YY",
"type": 1
}, {
"id": 3,
"company": 14,
"label": "Label ZZ",
"type": 2
}]
}
我有很多课
class ReponseApi {
lateinit var companies: List<Company>
lateinit var types: List<TypeShow>
lateinit var shows: List<Show>
}
class Company {
var id:Int = 0
lateinit var label:String
}
class TypeShow {
var id:Int = 0
lateinit var label:String
}
class Show {
var id:Int = 0
lateinit var company: Company
lateinit var label:String
lateinit var type: TypeShow
}
最后关联的 Gson().fromJson
val apiData = Gson().fromJson(strResponse, ReponseApi::class.java)
我有以下错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NUMBER at line 1
我知道 Kotlin 无法在 ID 为 9 的“Company”对象与具有属性“company”和 Int 值“9”的“Show”对象之间建立链接。
我尝试了一些类似构建“公司”数组的方法,并在“Show”类的构造函数中找到了一个好的,但是......我认为有一种更简单和更清晰的方法来做到这一点。
我想我需要一个 TypeAdapter in fromJson 但我坚持使用正确的语法。
感谢您的帮助