我正在使用Fuel库从HTTP请求接收一个JSON对象,看起来像:
{
'items': ['item1', 'item2', 'item3']
}
我获取JSON对象的代码是:
Fuel.get("get_cameras").responseJson { request, response, result ->
var my_json = result.get().obj()
}
如何迭代"items"键?我试过:
for (items in my_json) {}
但它说它没有迭代器((方法。我来自Python,可能有错误的想法,因为我看到了很多其他看似相似的问题,但似乎没有一个与我试图做的事情有关。
您需要首先使用"items"
键获取嵌套在对象中的数组,然后可以对该数组进行迭代。做到这一点的基本方法(如果您确信它只包含字符串(是在其索引上循环,并为每个索引在数组上调用getString
:
val my_json = result.get().obj()
val items = my_json.getJSONArray("items")
for (i in 0 until items.length()) {
val item = items.getString(i)
// use item
}
如果你不想在迭代时处理索引,你可以将JSONArray
的迭代包装成一个扩展函数:
fun JSONArray.forEachString(action: (String) -> Unit) {
for (i in 0 until length()) {
action(getString(i))
}
}
然后可以这样使用:
val items = my_json.getJSONArray("items")
items.forEachString { item ->
// use item
}
如果您真的想用正则for循环迭代数组,也可以用iterator
函数扩展JSONArray
类,但这会带来更多麻烦。