3

我有一个看起来像的 JSON 字符串{"code": "FOO"}

现在我想使用反序列化这个字符串kotlinx.serialization。我尝试了以下方法:

import kotlinx.serialization.*

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

val decoded = Json.decodeFromString<Result>(jsonString)

这在 JSON 仅包含 a 时有效code,但实际上 JSON 字符串中可能有其他键(这超出了我的控制)。我只关心code密钥,但是当存在其他密钥时,我的应用程序崩溃了。

如何只解码相关的 JSON 密钥?

4

1 回答 1

9

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

JsonDecodingException:偏移 14 处的意外 JSON 令牌:遇到未知键“错误”。在“Json {}”构建器中使用“ignoreUnknownKeys = true”来忽略未知键。JSON 输入:{"code":"FOO","otherKey":"Something else"}

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

import kotlinx.serialization.*

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

val decoded = Json { ignoreUnknownKeys = true }.decodeFromString<ErrorResponse>(jsonString)
于 2020-09-10T08:57:50.870 回答