Android Kotlin + Klaxon - 解析 JSON 根数组
Android Kotlin + Klaxon - Parsing a JSON root array
我有一个带有根数组的 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 cannot be
cast to com.beust.klaxon.JsonObject
我做错了什么?
在 Klaxon 的 GitHub 问题板上找到了答案:https://github.com/cbeust/klaxon/issues/87
数组解析是通过 parseArray()
完成的,所以修复是:
val wordDict = Klaxon().parseArray<DictWord>( activity.assets.open("dict.json") )
值得一提的是,数组解析仅通过流 API 支持,不支持对象映射 API。所以我们仅限于提供 InputStream
或 String
作为参数。
我有一个带有根数组的 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 cannot be cast to com.beust.klaxon.JsonObject
我做错了什么?
在 Klaxon 的 GitHub 问题板上找到了答案:https://github.com/cbeust/klaxon/issues/87
数组解析是通过 parseArray()
完成的,所以修复是:
val wordDict = Klaxon().parseArray<DictWord>( activity.assets.open("dict.json") )
值得一提的是,数组解析仅通过流 API 支持,不支持对象映射 API。所以我们仅限于提供 InputStream
或 String
作为参数。