JsonArray到Kotlin数据类使用Retrofit(期望的BEGIN_OBJECT,但是BEGIN_ARRAY)
我正在使用Retrofit2
fun create(): MyApiService { return Retrofit.Builder() .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl(BASE_URL) .build() .create(MyApiService::class.java) }
隐式转换下面的Json
[{ "id": 1, "name": "John", }, { "id": 2, "name": "Mary", } ]
转换成Kotlin数据类
object Model { data class Person(val id: Int, val name: String) }
但是,我正在尝试使用Expected BEGIN_OBJECT but was BEGIN_ARRAY
错误
@GET("/people.json") fun getPeople() : Observable<Model.Person>
我试着改变Model
对象从列表扩展(正如你通常在使用Java的改造1)或创建人的List
字段,但无济于事。
我发现我不必更改数据对象。
解决方法是简单地告诉调用方法来检索模型List
,而不是模型本身。
@GET("/people.json") fun getPeople() : Observable<List<Model.Person>>
经典的例子是如何用简单的方法解决一个难题。 做得好, Retrofit
!