【问题标题】:Kotlin + Gson - How to get an emptyList when null for data classKotlin + Gson - 如何在数据类为空时获取空列表
【发布时间】:2019-03-07 19:37:49
【问题描述】:

假设我有以下数据类:

data class MyDataClass(@SerializedName("myList") val myList: List<String>)

我尝试解析这个 JSON:

{ "myList": null } or {} 

我想得到一个空列表,但我得到一个空的myList。有谁知道如何在不为每个包含列表的类型实现registerTypeAdapter 的情况下序列化它?

如果我将emptyList() 设置为构造函数的默认值。第二个 JSON 按我的意愿工作。

【问题讨论】:

  • 理论上你使用的任何库/框架都可能使用反射,因此绕过构造函数,直接设置值。
  • 是的,我知道这一点,但我会找到一种方法将空列表默认​​设置为空
  • 没有TypeAdapter,我想不出任何办法。也许是Gson.Builder.serializeNulls。无论如何,您都应该尝试使用 TypeAdapter 第一个 IMO。

标签: kotlin gson


【解决方案1】:

将您的@SerializedName("myList") val myList: List&lt;String&gt; 切换为:

@SerializedName("myList") val myList: List&lt;String&gt;? 只是为了远离null

现在,Kotlin 有了默认参数。但我不知道它是否适合你的情况:

data class MyDataClass(@SerializedName("myList") val myList: List<String> = emptyList())

【讨论】:

  • 使用 kotlinx.serialization 非常适合我
猜你喜欢
  • 1970-01-01
  • 2022-11-20
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多