android - 在 Kotlinx 序列化中使字段可选
问题描述
这是我的 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:序列名称为“响应”的类型需要字段“参数”,但缺少
如果字段中缺少该字段,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
推荐阅读
- python - 使用 python 烧瓶获取实际的 facebook 图片网址?
- ios - 在后台线程上删除 Realm 对象会阻塞主线程
- aws-iot - Aws Iot 限制,可以附加到证书或 Amazon 的最大策略数
- html - 在 div 元素后添加换行符
- android - 向同一活动中的两个不同函数请求 WRITE_EXTERNAL_STORAGE 权限
- c# - 此 GetUniqueInt() 方法的时间复杂度
- node.js - 无法使用 node.js 安装 appium
- oracle - 如何确保永远不会得到 ora-01438:值大于此列允许的指定精度?
- c# - 尝试下载 pdf 文件时线程被中止的问题
- ansible - Ansible playbook 使用 sed 将查找废气放入文本文件