在 Kotlinx 序列化中使字段可选
Posted
技术标签:
【中文标题】在 Kotlinx 序列化中使字段可选【英文标题】:Make a field optional in Kotlinx serialization 【发布时间】:2021-09-12 11:54:17 【问题描述】:这是我的 pojo 课
@Serializable
data class Response(
@SerialName("message") val message: String?,
@SerialName("parameters") val parameters: Map<String, String>?
)
这是 Json,我试图从以下位置解码:
"message": "Some text"
这里,parameters
字段是可选的。当我尝试解码时
Json.decodeFromString<Response>(response)
我收到以下异常:
kotlinx.serialization.MissingFieldException: 字段“参数”是 序列名称为“响应”的类型是必需的,但它丢失了
如果Json
中缺少该字段,我期待将字段parameters
设置为null
【问题讨论】:
【参考方案1】:您需要为 parameters
属性指定默认值,如下所示:
@Serializable
data class Response(
@SerialName("message") val message: String?,
@SerialName("parameters") val parameters: Map<String, String>? = null
)
您可以在此处阅读更多信息:https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/basic-serialization.md#optional-properties
【讨论】:
以上是关于在 Kotlinx 序列化中使字段可选的主要内容,如果未能解决你的问题,请参考以下文章
@SerialInfo - 如何使用 Kotlinx 序列化管理用户定义的串行注释?