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

Serialize a list of optionals with kotlinx serialization

如何使用 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<List<String?>> 的地方提供了 SerializationStrategy<List<String>>。我怎样才能获得后者?

您可以使用 NullableSerializer:

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