在 Kotlinx 序列化中使字段可选

Make a field optional in Kotlinx serialization

这是我的pojo class

@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: Field 'parameters' is required for type with serial name 'Response', but it was missing

我期待将字段 parameters 设置为 null,如果 Json

中缺少该字段

您需要为 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