使用 kotlinx 序列化序列化选项列表

Posted

技术标签:

【中文标题】使用 kotlinx 序列化序列化选项列表【英文标题】:Serialize a list of optionals with kotlinx serialization 【发布时间】:2019-12-31 07:43:40 【问题描述】:

如何使用 kotlinx 序列化对可选字符串列表进行字符串化?我想执行类似于:

val json = Json(JsonConfiguration.Stable)
val data: List<String?> = listOf("v1", null, "v3")
val dataJson = json.stringify(String.serializer().list, data)

但是,这不会编译。我知道String.serializer().list 提供了SerializationStrategy&lt;List&lt;String&gt;&gt;,我需要SerializationStrategy&lt;List&lt;String?&gt;&gt;。如何获得后者?

【问题讨论】:

【参考方案1】:

你可以使用NullableSerializer:

val dataJson = json.stringify(NullableSerializer(String.serializer()).list, data)
println(dataJson) // prints ["v1",null,"v3"]

【讨论】:

正是我想要的,非常感谢!

以上是关于使用 kotlinx 序列化序列化选项列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 kotlinx 序列化响应中的自定义对象列表

如何禁用 kotlinx 序列化多态鉴别器?

在 Kotlin/Native 中使用 kotlinx.serialization 进行多态反序列化

@SerialInfo - 如何使用 Kotlinx 序列化管理用户定义的串行注释?

如何使用 kotlinx 序列化将值数组反序列化为集合

如何使用 kotlinx 序列化使用 open val 序列化 kotlin 密封类