Intereting Posts
Интересный оператор '===' в Котлине коллекции kotlin, преобразующие карту в новую карту со значениями, вычисленными из оригинала Тип несоответствия: выведенный тип – String? но String ожидалось в kotlin как преобразовать json-массив в json-объект Mockito Wanted, но не вызывается Ручной Android-сканер штрих-кодов Android – Как получить доступ к сканеру и прочитать данные Может ли Kotlin или Swift разобрать JSON так же, как Javascript? Kotlin 1.1.3-2 Невозможно создать экземпляр фрагмента в OnResume Android Gradle не загружает репозиторий Kotlin Почему Netbeans жалуется на двусмысленность, в то время как Intellij вместо этого не напишите шестнадцатеричный целочисленный литерал, равный Int.MIN_VALUE в Котлине Kotlin – Использование Enums для извлечения Char Контекст null, внезапно получая NPE после перехода на API 27 Kotlin NDArray с конструктором лямбда с общим типом возврата Как объявить значение массива в аннотациях Kotlin?

Топливо, Котлин, Гсон, ожидается 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)