问题描述
我有一个看起来像{"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)