燃料,Kotlin,Gson,预计BEGIN_ARRAY,但在BEGIN_OBJECT第1行

我试图解析一个JSON字符串,如下所示:

{ "count": 1, "items": [ { "organization_id": 6972979, "organization_name": "Lorem ipsum dolor sit amet, consectetur adipisicing elit", } ] } 

和Kotlin课堂:

 class LoremModel { var count: Int? = null var items: List? = null class Lorem { var organization_id: Int? = null var organization_name: String? = null constructor(organization_id: Int?, organization_name: String?) { this.organization_id = organization_id this.organization_name = organization_name } } class ListDeserializer : ResponseDeserializable<List> { override fun deserialize(content: String) = Gson().fromJson<List>(content, object : TypeToken<List>() {}.type) } } 

燃料部分:

 Fuel.get("/lorem/search", listOf("keywords" to keyword, "category" to category, "pageNum" to "1", "pageSize" to "10")). responseObject(LoremModel.ListDeserializer()) { request, _, item -> } 

但是我得到一个错误:

[失败:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期的BEGIN_ARRAY,但是BEGIN_OBJECT在第1行第2列路径$]

我如何解决它?

你的json

 { "count": 1, "items": [ { "organization_id": 6972979, "organization_name": "Lorem ipsum dolor sit amet, consectetur adipisicing elit", } ] } 

表示一个JSON对象而不是一个JSON数组。

所以不是试图将它反序列化成一个List of LoremModel对象

 Gson().fromJson>(content, object : TypeToken>() {}.type) 

您应该将其反序列LoremModeltypes的对象。 所以你可以这样做:

 Gson().fromJson(content, LoremModel::class.java)