构建 Kotlin 类以使用 Gson 将 json 响应转换为类
Posted
技术标签:
【中文标题】构建 Kotlin 类以使用 Gson 将 json 响应转换为类【英文标题】:Constructing Kotlin classes for using Gson to convert json response to class 【发布时间】:2021-11-07 19:31:46 【问题描述】:我开始学习 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
。
【问题讨论】:
【参考方案1】:这个:
class Certifications
var certifications: List<Country>? = null
应该是这样的:
class Certifications
var certifications: Map<String, <List<Certification>>? = null
String
是代码 "NL"
和 "CA"
- 或者如果您已经有自定义类型适配器,您可以使用 Map<Country, <List<Certification>>
- 但我不确定您是否有此设置。
【讨论】:
以上是关于构建 Kotlin 类以使用 Gson 将 json 响应转换为类的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 使用 Gson 将 json 字符串转换为对象列表
如何在 Android 的 Kotlin 中使用 GSON 将 JSON 对象转换为 JSON 数组
Gson 无法解析 Kotlin 中的字符串 json 格式数据