Android 如何使用gson在kotlin中获取json数据?
这是我的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
{
"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
)