错误消息:应为 BEGIN_ARRAY 但是来自我自己的休息服务器 Localhost 的 BEGIN_OBJECT

Posted

技术标签:

【中文标题】错误消息:应为 BEGIN_ARRAY 但是来自我自己的休息服务器 Localhost 的 BEGIN_OBJECT【英文标题】:Error message : Expected BEGIN_ARRAY but was BEGIN_OBJECT from my own rest server Localhost 【发布时间】:2021-09-01 10:44:50 【问题描述】:

我正在尝试使用 okHttp 从我自己在 localhost 上的休息服务器获取 android 上的 JSON,如下所示:

JSON


    "status": true,
    "data": [
        
            "id": "1",
            "title": "Jadwal Catin 2021",
            "description": "bismillah"
        ,
        
            "id": "2",
            "title": "Jadwal Vaksin Covid Lansia",
            "description": "Tanggal 16-Juli-2021 di puskesmas perwira sudah bisa vaksin covi-19 untuk lansia"
        
    ]

数据类

class Placeholder 
    var userId: Int? = null
    var id: Int? = null
    var title: String? = null
    @SerializedName("description")
    var body: String? = null

进入Recycleview

        override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) 
            val body = response.body!!.string()
            var gson = GsonBuilder().create()
            var result = gson.fromJson(body, Array<Placeholder>::class.java).toList()

            runOnUiThread 
                beritaAdapter.setData(result)
            

       

任何想法我应该如何解决它?

【问题讨论】:

我认为您希望将 JSON 中的 data 反序列化为您的 PlaceHolder 类。 data 是你想要的数组,但是你得到的 body 是包含 data 和状态的对象。 【参考方案1】:

您在此处显示的 JSON 不仅仅是 Placeholder 的数组,它是一个 JSON 对象 ( ... ),它本身包含两个属性 statusdata。而data 是一个与您的Placeholder 类部分匹配的对象数组。

您可以通过以下类来表示整个 JSON:

class PlaceholdersResponse 
    var status: Boolean
    var data: List<Placeholder>

您可以通过这种方式访问​​您的数据数组:

var result = gson.fromJson(body, PlaceholdersResponse::class.java).data.toList()

【讨论】:

谢谢它的工作,但我怎样才能在我的 recycleview 上获得最新的? 您的 JSON 中似乎没有任何日期概念。如果它们在 JSON 中从最旧到最新排序,您可以使用列表中的asReversed() 函数来获取列表中的反向视图。

以上是关于错误消息:应为 BEGIN_ARRAY 但是来自我自己的休息服务器 Localhost 的 BEGIN_OBJECT的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalStateException:应为 BEGIN_ARRAY,但在第 1 行第 2 列是 BEGIN_OBJECT

应为 BEGIN_ARRAY,但在第 1 行第 1 列路径为 STRING

java.lang.IllegalStateException:应为 BEGIN_ARRAY,但路径为 BEGIN_OBJECT

期待一个字符串,但是BEGIN_ARRAY- Gson

如何解决“预期的BEGIN_ARRAY但是在第1行第1列路径的STRING”[关闭]

预期 BEGIN_ARRAY 但在第 1 行第 2 列是 BEGIN_OBJECT。如何解决?