android - 构建 Kotlin 类以使用 Gson 将 json 响应转换为类
问题描述
我开始学习 Android 开发,目前我专注于如何使用 REST API。我正在试验的服务(电影数据库)提供了以下形式的响应:
{
"certifications": {
"CA": [
{
"certification": "G",
"meaning": "All ages.",
"order": 1
},
...
],
"NL": [
{
"certification": "AL",
"meaning": "All ages.",
"order": 1
},
...
],
...
}
}
列表中包含相当长的对象列表(CA、NL、EN 等),但所有这些对象都包含相同的内容 - 具有完全相同结构的对象列表。我尝试过的任何在线 JSON 到 Kotlin 类转换器都想为每个对象创建单独的类,这对我来说似乎很浪费。
我目前有这个课程:
class Certifications {
var certifications: List<Country>? = null
}
class Country {
var country: String? = null
var ratings: List<Certification>? = null
}
class Certification {
var certification: String? = null
var meaning: String? = null
var order: Int = 0
}
尝试这样做val thing = gson.fromJson(body, Certifications::class.java)
会导致 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 20 path $.certifications
.
解决方案
这个 :
class Certifications {
var certifications: List<Country>? = null
}
应该是这样的:
class Certifications {
var certifications: Map<String, <List<Certification>>? = null
}
String
代码在哪里"NL"
& "CA"
- 或者如果你已经有一个自定义类型的适配器,你可以这样做Map<Country, <List<Certification>>
- 但我不确定你是否有这个设置。
推荐阅读
- python - 有没有办法从python中的元组列表中获取丰富的数据
- angular - 2020年如何整合AngularSPA和Hapi?
- python - 如何从 pandas 数据帧计数矩阵创建 AnnData 对象?
- javascript - 如何在 javascript 中读取二进制文件(xml 样式)?
- javascript - React/Redux 和 JavaScript Promise.all
- detox - 在 device.openUrl 调用之后在 Android 上获取过去的系统警报
- twig - 如果 Twig 中没有子菜单,则隐藏块
- c# - 如何防止用户登录多个设备以及如何从前一个设备结束会话?
- python - 如何在while循环中覆盖许多打印行
- r - 将 selectInput() 值(列名之间的选择)作为轴传递给 Shiny 中的 ggplot()