在 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
这是我的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