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

Kotlin @Serializable为何默认值属性未被JSON序列化?

解决kotlinx.serialization默认值属性不序列化到JSON的问题

kotlinx.serialization默认的序列化策略是仅包含那些显式赋值的属性,带默认值的属性因为使用了类定义时的默认值初始化,所以不会被写入JSON——这就是你看到结果只有required字段的原因。

如果需要在API响应中包含所有字段(包括带默认值的),只需要在创建Json实例时开启encodeDefaults配置即可:

修改后的代码示例:

import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.encodeToJsonElement

@Serializable
data class Test(
    val required: String,
    val defaulted: String = "default",
)

val test = Test(required = "set")

// 开启encodeDefaults配置
val json = Json { encodeDefaults = true }
println(json.encodeToJsonElement(test))

// Result= {"required":"set","defaulted":"default"}

这样生成的JSON就会包含所有属性,不管是否使用了默认值初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:10:39