json - 如何使用 kotlinx.serialization 部分解码 JSON 字符串?

标签 json kotlin serialization kotlinx.serialization

我有一个 JSON 字符串,看起来像 {"code": "FOO"} .
现在我想使用 kotlinx.serialization 反序列化这个字符串.我尝试了以下方法:

import kotlinx.serialization.*

@Serializable
data class Result(val code: String?)

val decoded = Json.decodeFromString<Result>(jsonString)
当 JSON 只包含 code 时,这有效,但实际上 JSON 字符串中可以有其他键(这是我无法控制的)。我只关心code键,但是当存在其他键时,我的应用程序崩溃。
我如何只解码相关的 JSON key ?

最佳答案

在进一步调试我的应用程序后,我发现以下错误:

JsonDecodingException: Unexpected JSON token at offset 14: Encountered an unknown key 'error'. Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys. JSON input: {"code":"FOO","otherKey":"Something else"}


我找不到任何关于此的文档,但我设法通过将代码更改为以下内容来解决此问题:
import kotlinx.serialization.*

@Serializable
data class Result(val code: String?)

val decoded = Json { ignoreUnknownKeys = true }.decodeFromString<ErrorResponse>(jsonString)

关于json - 如何使用 kotlinx.serialization 部分解码 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63826230/

相关文章:

javascript - 如何在node js中从json结果中获取键值

javascript - 如何检查 NodeJS 中的 JSON 是否为空?

android - 无法使用 Android Studio 3.0 + DataBinding + Kotlin 构建项目

java - 用java实现我自己的序列化

javascript - 类型错误 : Object of type 'Category' (model) is not JSON serializable

json - Elasticsearch查询以选择包含一个字段的值的所有文档多值字段

java - 在Kotlin中结合反射、枚举和泛型,类型推断失败,但我也不知道

android-studio - ^ map在Android Studio 4.0中是什么意思?

serialization - 使用 ProtoBuf 时最好的加密方法是什么?

python - 在 json 对象中搜索 key