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
相关产品推荐
相关产品推荐

