You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用kotlinx.serialization将带默认值的Kotlin数据类序列化为JSON

解决方法
  • 方法一:全局配置序列化策略,所有带默认值的属性都参与序列化
    你可以在创建Json实例时开启encodeDefaults配置项,示例代码如下:
    // 自定义Json实例,开启默认值序列化
    val json = Json {
        encodeDefaults = true
    }
    // 使用自定义实例执行序列化
    json.encodeToString(TestClass("text"))
    
    该配置对所有通过这个Json实例完成的序列化操作生效。
  • 方法二:单独为指定字段配置,仅针对需要的属性生效
    如果你不想修改全局配置,只希望optional字段在默认值状态下也参与序列化,可以给该字段添加@EncodeDefault注解,修改后的类代码如下:
    import kotlinx.serialization.EncodeDefault
    import kotlinx.serialization.Serializable
    
    @Serializable
    data class TestClass(
        val obligatory: String,
        @EncodeDefault
        val optional: Int = 0
    )
    
    之后直接使用默认的Json实例序列化也会输出optional字段。

kotlinx.serialization默认会省略取值等于默认值的属性,以此减少序列化后内容的体积,以上两种方案都是通过修改该默认策略实现需求。

内容的提问来源于stack exchange,提问作者Aleksandr Baklanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:36:02