我怎样才能得到 Gson 的解析?我尝试这样做,但我得到了一个 Expected BEGIN_ARRAY 但是是 BEGIN_OBJECT

Posted

技术标签:

【中文标题】我怎样才能得到 Gson 的解析?我尝试这样做,但我得到了一个 Expected BEGIN_ARRAY 但是是 BEGIN_OBJECT【英文标题】:How can i get a parse with Gson? I try to do it but i get an Expected BEGIN_ARRAY but was BEGIN_OBJECT 【发布时间】:2021-06-25 18:46:42 【问题描述】:

这是我的 Main.class。我想从 Url 获取解析。它包含一个 Json。

fun main (args: Array<String>) 
    val response = URL("https://api.looksites.tk/").readText()
    var gson = Gson()

    val data = gson.fromJson(response, Array<Response>::class.java)
    for (x in 0 until data.size) 
        print(data[x])
    

这是我的 POJO

data class Response(
    @field:SerializedName("code")
    val code: String? = null,

    @field:SerializedName("message")
    val message: String? = null,

    @field:SerializedName("status")
    val status: String? = null
)

这是我的回应。我需要解析它。

"status":"success","code":"200","message":"Access granted"

这是我的错。 应为 BEGIN_ARRAY,但为 BEGIN_OBJECT

请帮帮我。

【问题讨论】:

响应中的原始文本是什么? 它的 "status":"success","code":"200","message":"访问权限" 【参考方案1】:

在这一行中,您告诉 Gson 您期望响应是一个数组

val data = gson.fromJson(response, Array<Response>::class.java)

但是根据您的错误消息以及您在 cmets 中发布的响应,您实际上得到的是一个 json 对象,而不是一个数组。如果您将代码更改为

val data = gson.fromJson(response, Response::class.java)

它应该正确地获取你的对象

【讨论】:

以上是关于我怎样才能得到 Gson 的解析?我尝试这样做,但我得到了一个 Expected BEGIN_ARRAY 但是是 BEGIN_OBJECT的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin如何使用GSON解析动态JSON字段?

我怎样才能得到无尽的期望? [复制]

我的 if 语句没有延续到最终输出。一个更改了字符串,而其他的则没有,但似乎应该这样做。我怎样才能解决这个问题?

android中gson解析怎样防止参数确实

我怎样才能得到我的记忆快照

无法解析符号gson