5

我有一个带有根数组的 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

我究竟做错了什么?

4

1 回答 1

8

在 Klaxon 的 GitHub 问题板上找到了答案:https ://github.com/cbeust/klaxon/issues/87

数组解析是通过 完成parseArray()的,所以修复是:

val wordDict = Klaxon().parseArray<DictWord>( activity.assets.open("dict.json") )

值得一提的是,数组解析仅通过流 API 支持,对象映射 API 不支持。因此,我们仅限于提供 anInputStream或 aString作为参数。

于 2018-03-03T22:21:09.317 回答