如何使用 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"))
有一个 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"))