我怎样才能得到 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的主要内容,如果未能解决你的问题,请参考以下文章