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

Другие вопросы по тегам