Топливо, Котлин, Гсон, ожидается BEGIN_ARRAY, но BEGIN_OBJECT в строке 1

Я пытаюсь разобрать строку JSON следующим образом:

{ "count": 1, "items": [ { "organization_id": 6972979, "organization_name": "Lorem ipsum dolor sit amet, consectetur adipisicing elit", } ] } 

И класс Котлина:

 class LoremModel { var count: Int? = null var items: List<Lorem>? = null class Lorem { var organization_id: Int? = null var organization_name: String? = null constructor(organization_id: Int?, organization_name: String?) { this.organization_id = organization_id this.organization_name = organization_name } } class ListDeserializer : ResponseDeserializable<List<LoremModel>> { override fun deserialize(content: String) = Gson().fromJson<List<LoremModel>>(content, object : TypeToken<List<LoremModel>>() {}.type) } } 

Топливная часть:

 Fuel.get("/lorem/search", listOf("keywords" to keyword, "category" to category, "pageNum" to "1", "pageSize" to "10")). responseObject(LoremModel.ListDeserializer()) { request, _, item -> } 

Но я получаю сообщение об ошибке:

[Failure: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидается BEGIN_ARRAY, но BEGIN_OBJECT в строке 1, столбец 2 путь $]

Как это решить?

Ваш json

 { "count": 1, "items": [ { "organization_id": 6972979, "organization_name": "Lorem ipsum dolor sit amet, consectetur adipisicing elit", } ] } 

представляет объект JSON, а не массив JSON.

Поэтому вместо того, чтобы пытаться десериализовать его в виде List объектов LoremModel

 Gson().fromJson<List<LoremModel>>(content, object : TypeToken<List<LoremModel>>() {}.type) 

Вы должны десериализовать его на объект типа LoremModel . Таким образом, вы можете сделать это:

 Gson().fromJson(content, LoremModel::class.java) 
Intereting Posts
removeAll – изменить список источников Как передать класс класса kotlin или экземпляр класса kotlin в качестве аргументов Как настроить версию Kotlin в Android Studio? Список связанных со списком в Котлине Kotlin – Проверьте, является ли общий параметр необязательным или нет? Scala требует () эквивалента в Kotlin Межстраничные объявления Admob: «IllegalStateException: только действия в полноэкранном режиме могут запрашивать ориентацию» Ввод данных в массив с циклом Ошибка обратного вызова OnSuccessListener Firebase Storage Android: реорганизовать множество групп переключателей в одном действии Котлин не может получить доступ к защищенному абстрактному методу Котлин. Какое использование класса без тела? Могу ли я использовать @autowire (spring-context) для настольного приложения kotlin? «Lateinit» или «by lazy» при определении глобального android.widget var / val Данные Spring создают внутреннее соединение OneToMany