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 ошибкой Expected BEGIN_OBJECT but was BEGIN_ARRAY при попытке

 @GET("/people.json") fun getPeople() : Observable<Model.Person> 

Я попытался изменить объект Model чтобы расширить его из списка (как вы обычно делали в Retrofit 1 с Java) или создать поле List людей, но безрезультатно.

Я узнал, что мне не нужно менять объект данных.

Решение состоит в том, чтобы просто сказать вызывающему методу получить List моделей вместо самой модели.

 @GET("/people.json") fun getPeople() : Observable<List<Model.Person>> 

Классический пример того, как сложная проблема может быть решена с помощью простого подхода. Молодцы, Retrofit !