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

问题描述

我有一个看起来像{"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密钥?

解决方法

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

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

我没有找到任何文档,但是我设法通过将代码更改为以下内容来解决了这个问题:

import kotlinx.serialization.*

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...