Android 如何使用gson在kotlin中获取json数据?

Android 如何使用gson在kotlin中获取json数据?,android,android-studio,kotlin,gson,Android,Android Studio,Kotlin,Gson,这是我的json: { "events": [ { "strHomeTeam": "Liverpool", "strAwayTeam": "Swansea", } ] } 这是我的模型: data class Detail(@SerializedName("events") val events : EventDetail) data class EventDetail(val strHomeT

这是我的json:

{
    "events": [
        {
            "strHomeTeam": "Liverpool",
            "strAwayTeam": "Swansea",
         }
     ]
}
这是我的模型:

data class Detail(@SerializedName("events") val events : EventDetail)
data class EventDetail(val strHomeTeam : String, val strAwayTeam: String)
这是我将json数据传递到模型的代码:

val body = response?.body()?.string()
val gson = GsonBuilder().create()
val eventData = gson.fromJson(body, Detail::class.java)
但我得到以下错误:

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 12 path $.events
有人能帮我吗?

换衣服

data class Detail( @SerializedName("events") val events : EventDetail)|

数据类详细信息(@SerializedName(“事件”)val事件:列表)

您应该创建如下所示的pojo类

  data class EventsModel(

    @field:SerializedName("events")
    val events: List<EventsItem?>? = null
)

在JSON中有一个EventDetail数组/列表,而在Detail类中有一个简单字段。将其更改为数组应该可以解决您的问题,但是如何访问EventDetail属性,例如从Detail对象访问“strHomeTeam”,您可以访问EventDetails数组。示例:for(eventData.events中的detail){println(detail.srtHomeTeam)}非常感谢您,它已经解决了。祝您愉快:)@Lukmahakim mark currect如果您解决了问题,则不需要
@SerializedName
,因为变量已经有了匹配的名称。此外,如果JSONI中的值是强制性的,则不需要可选的。为什么在
SerializedName
  data class EventsModel(

    @field:SerializedName("events")
    val events: List<EventsItem?>? = null
)
  data class EventsItem(

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

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