Kotlin JSONArray 到 MutableList<JSONObject>

Aeg*_*tes 2 arrays json mutable kotlin

我对 Kotlin 相当陌生,目前我经常处理 JSON。

我从服务器收到一个 JSON 字符串,我将其解析JSONArray如下

var dataArray = JSONArray(String(resultVar!!))
Run Code Online (Sandbox Code Playgroud)

但据我所知,JSONArray它并没有真正给我足够的能力来改变它的数据JSONArray,如果我没记错的话,它迫使我创建一个新的。所以我想我应该使用MutableList<JSONObject>,这似乎已经足够了,但是我找不到将 JSONArray 或 String 解析到其中的方法。

我如何以简单的方式做到这一点?我是否必须遍历 JSONArray 逐个添加每个 JSONObject?

作为一个附带问题,我应该坚持使用 JSONArray 吗?有没有办法操作里面的数据?

Yoa*_*erg 6

看起来而言,没有内置方法可以转换JSONArrayList. 但是,您可以使用 Kotlin 技巧使 Java 代码更短:

fun JSONArray.toMutableList(): MutableList<JSONObject> = MutableList(length(), this::getJSONObject)
Run Code Online (Sandbox Code Playgroud)

请注意,JSONArray可能具有不是JSONObject(但JSONArray例如)的值。如果您不确定数组是否只包含对象,请使用以下方法:

fun JSONArray.toMutableList(): MutableList<Any> = MutableList(length(), this::get)
Run Code Online (Sandbox Code Playgroud)

如果您使用的是JSON-java 而不是 android,那么您可以使用JSONArray.toList()which 返回一个您可以修改的列表。