如何使用 kotlinx.serialization 将具有默认值的 Kotlin data-class 序列化为 JSON?

How to serialize Kotlin data-class with default values into JSON using kotlinx.serialization?

有一个 class 默认值的例子:

@Serializable
data class TestClass(
    val obligatory: String,
    val optional: Int = 0
)

它可以从 jsons 中正确反序列化,例如:{ "obligatory":"text", "optional":1 }{ "obligatory":"text" }
同时,其序列化的结果必须包含“可选”属性。

序列化的结果:

Json.encodeToString(TestClass("text"))

我预计 { "obligatory":"text", "optional":0 },但现在我有 { "obligatory":"text" }

我应该如何更改我的代码才能达到预期的结果?

默认情况下,Kotlinx 序列化 doesn't encode default values。我想它假定您在另一侧使用相同的数据模型。

您可以 force serializing default values 配置序列化程序时:

val json = Json { encodeDefaults = true }

json.encodeToString(TestClass("text"))