如何使用kotlinx.serialization将带默认值的Kotlin数据类序列化为JSON
解决方法
- 方法一:全局配置序列化策略,所有带默认值的属性都参与序列化
你可以在创建Json实例时开启encodeDefaults配置项,示例代码如下:
该配置对所有通过这个Json实例完成的序列化操作生效。// 自定义Json实例,开启默认值序列化 val json = Json { encodeDefaults = true } // 使用自定义实例执行序列化 json.encodeToString(TestClass("text")) - 方法二:单独为指定字段配置,仅针对需要的属性生效
如果你不想修改全局配置,只希望optional字段在默认值状态下也参与序列化,可以给该字段添加@EncodeDefault注解,修改后的类代码如下:
之后直接使用默认的Json实例序列化也会输出import kotlinx.serialization.EncodeDefault import kotlinx.serialization.Serializable @Serializable data class TestClass( val obligatory: String, @EncodeDefault val optional: Int = 0 )optional字段。
kotlinx.serialization默认会省略取值等于默认值的属性,以此减少序列化后内容的体积,以上两种方案都是通过修改该默认策略实现需求。
内容的提问来源于stack exchange,提问作者Aleksandr Baklanov
相关产品推荐
相关产品推荐

