Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin+;Klaxon-解析JSON根数组_Android_Arrays_Json_Kotlin_Klaxon - Fatal编程技术网

Android Kotlin+;Klaxon-解析JSON根数组

Android Kotlin+;Klaxon-解析JSON根数组,android,arrays,json,kotlin,klaxon,Android,Arrays,Json,Kotlin,Klaxon,我有一个带有根数组的JSON资产: [ { "word": "word", "label": "label" }, { "word": "word2", "label": "label2" } ] 我正试图用Klaxon解析它 到目前为止,我已经尝试了几种方法: val wordDict = Klaxon().parse<List<DictWord>>( activity.assets.open("dict.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") )
val-wordDict=Klaxon().parse(activity.assets.open(“dict.json”))
val wordDict=Klaxon().parse(activity.assets.open(“dict.json”))
val wordDict=Klaxon().parse(activity.assets.open(“dict.json”))
这会导致空列表或异常:

java.lang.ClassCastException:com.beust.klaxon.JsonArray不能为 转换为com.beust.klaxon.JsonObject


我做错了什么?

在Klaxon的GitHub发行版上找到了答案:

数组解析是通过
parseArray()
完成的,因此修复方法是:

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

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

实际上它也适用于对象映射,它成功地将数组的每个元素映射到我为其定义的相应数据类的对象。这似乎是一个新特性。你有任何文档支持你的新发现吗?我刚刚尝试过这样的
val WordDict=ArrayList(Klaxon().parseArray(jsonString))
,我必须将解析后的数据传递到
ArrayList
,因为
parseArray
返回一个
列表,而我需要
ArrayList