android - 在 Kotlinx 序列化中使字段可选

标签 android json kotlin parsing kotlinx.serialization

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

如果 Json

中缺少该字段,我期待将字段 parameters 设置为 null

最佳答案

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

关于android - 在 Kotlinx 序列化中使字段可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68192794/

相关文章:

json - 希望使用 Golang 将 json 文件转换为 csv 文件

json - typescript/angularJs 2 中的类型 'name' 不存在属性 'JSON'

android - 带有导航项和普通项的抽屉导航

java - Android库类的静态变量的生命周期是多少?

android定义密度无关像素

android - WebRTC 使用 Peerjs 和原生 Android/iOS 客户端

java - Kotlin如何使用JDK 1.8调用Java 11代码?

android - 喷气背包组合。强制切换夜/夜资源

python - 在 pythonanywhere Flask 应用程序中读取 json

android - 与 SupervisorJob 的协程 - 取消行为