Android Kotlin + Klaxon - парсинг корневого массива JSON
У меня есть актив JSON с корневым массивом:
[
{
"word": "word",
"label": "label"
},
{
"word": "word2",
"label": "label2"
}
]
Я пытаюсь разобрать его с помощью Klaxon.
Пока что я попробовал несколько методов:
val wordDict = Klaxon().parse<List<DictWord>>( activity.assets.open("dict.json") )
val wordDict = Klaxon().parse<Array<DictWord>>( activity.assets.open("dict.json") )
val wordDict = Klaxon().parse<JsonArray<DictWord>>( activity.assets.open("dict.json") )
Что либо приводит к пустому списку, либо к исключению:
java.lang.ClassCastException: com.beust.klaxon.JsonArray не может быть приведен к com.beust.klaxon.JsonObject
Что я делаю неправильно?
2 ответа
Нашел ответ на доске объявлений GitHub Клаксона: https://github.com/cbeust/klaxon/issues/87
Разбор массива выполняется через parseArray()
Итак, исправление было:
val wordDict = Klaxon().parseArray<DictWord>( activity.assets.open("dict.json") )
Стоит отметить, что синтаксический анализ массива поддерживается только через API потоковой передачи, а не через API отображения объектов. Таким образом, мы ограничены либо предоставлением InputStream
или String
в качестве аргумента.
Android Котлин
Работа с Json с этим очень проста.
Просто это видео: посмотритеJsonToKotlin - YouTube
Документация: JsonToKotlin - GitHub