我对Kotlin来说还很陌生,目前我正在处理JSON。
我从服务器收到一个JSON字符串,如下所示解析为JSONArray
var dataArray = JSONArray(String(resultVar!!))
但是据我所知JSONArray
并没有真正为我提供足够的功能来更改其数据,如果我没有记错的话,它会迫使我创建一个新的JSONArray
。因此,我认为我应该使用MutableList<JSONObject>
,这似乎已经足够好了,但是我找不到将JSONArray或String解析为它的方法。
我该如何轻松地做到这一点?我是否必须遍历JSONArray逐个添加每个JSONObject?
作为附带的问题,我应该坚持使用JSONArray吗?有没有办法处理其中的数据?
答案 0 :(得分:2)
就seems而言,没有内置方法可将JSONArray
转换为List
。
但是,您可以使用Kotlin技巧使Java代码更短:
fun JSONArray.toMutableList(): MutableList<JSONObject> = MutableList(length(), this::getJSONObject)
请注意,JSONArray
的值可能不是JSONObject
(例如JSONArray
)。如果不确定数组仅包含对象,请使用以下方法:
fun JSONArray.toMutableList(): MutableList<Any> = MutableList(length(), this::get)
如果您使用的是JSON-java
library而不是android的Android,则可以使用JSONArray.toList()
,它返回可以修改的列表。