簡體   English   中英

如何在 Kotlin Android 中使用 Retrofit2 從 Json Object 獲取列表

[英]How to get List from Json Object using Retrofit2 in Kotlin Android

我試圖使用 Retrofit2 從以下 json 中獲取學生列表

{
   "students":[
      {
         "address":{
            "city":"DETROIT",
            "state":"MI",
            "street":"4904  Yorkshire Circle",
            "zip":"48228"
         },
         "school":"A B C D School",
         "name":"Mani Nezhad"
      },
      {
         "address":{
            "city":"RED HOOK",
            "state":"NY",
            "street":"1641  Custer Street",
            "zip":"12571"
         },
         "school":"X Y Z School",
         "name":"Jane Lindberg"
      }
   ]
}

這是我的 Model Class

data class Student(
    val name: String,
    val school: String,
    val address: Address
) {
    data class Address(val street: String, val city: String, val state: String, val zip: String)

這是在接口中編寫的方法:

    @GET("abcd")
    fun getStudents(@Query("token") token: String): Call<List<Student>>

但每當我運行該應用程序時,我都會收到此錯誤

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

我知道我試圖從 json 中獲取數組,該數組以{大括號開頭。 現在我的問題是如何從這種以大括號開頭的 json 中獲取這個學生數組?

您的回復是 object 而不是數組。 所以你應該創建 Wrapper Object 來保存List<Student> 像這樣的東西。

    data class ApiResponse(val students: List<Student>)


@GET("abcd")
fun getStudents(@Query("token") token: String): Call<ApiResponse>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM