安卓。无法解析bundle中的json字符串

问题描述 投票:0回答:1

我正在尝试将 json 字符串从包解析为对象。 但我收到错误:

java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但实际为 STRING 在第 1 行第 2 列路径 $

这是我的代码:

val jsonString = bundle.getString(key)
val type = Info::class.java
val json = Gson().fromJson(jsonString, type)

我的

Info
数据类:

data class Info(
   val id: Long,
   val canProceed: Boolean,
   val wasAdded: Boolean,
)

我尝试评估表达式,我发现

bundle.getString(key)
返回

"{\"id\":6067857,\"canProceed\":false,\"wasAdded\":false}"

一切看起来都不错,但由于某种原因,我收到了上面描述的错误。此外,如果在表达式求值模式下,我从

bundle.getString(key)
复制返回值并手动替换它,如下所示:

Gson().fromJson("{\"id\":6067857,\"canProceed\":false,\"wasAdded\":false}", type)

然后一切顺利,我得到了对象。可能是什么问题?

请帮助我。

附注 我传递给我的包的内容:

val info: Info = Info(id = 6067857, canProceed = false, wasAdded = false) 
bundle.putString(key, Gson().toJson(info))
android gson bundle android-json
1个回答
0
投票

您收到的错误消息表明 预期 BEGIN_OBJECT 但在第 1 行是 STRING ,这意味着 Gson 期望您的 JSON 字符串带有对象括号

{
而不是带有左引号
"

您分享的内容还显示您有一个 JSON 字符串。

bundle.getString(key)
返回一个 JSON 字符串,并且您所编写的内容可以正常工作。

如果你编写下面的代码,它应该可以工作:

val json = Gson().fromJson(bundle.getString(key), Info::class.java)
© www.soinside.com 2019 - 2024. All rights reserved.