【问题标题】:How to partially decode a JSON string using kotlinx.serialization?如何使用 kotlinx.serialization 部分解码 JSON 字符串?
【发布时间】:2020-12-28 17:56:21
【问题描述】:

我有一个类似于 {"code": "FOO"} 的 JSON 字符串。

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

import kotlinx.serialization.*

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

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

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

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

【问题讨论】:

    标签: json kotlin serialization kotlinx.serialization


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 1970-01-01
      • 2011-08-27
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2011-01-15
      • 1970-01-01
      相关资源
      最近更新 更多