我正在使用如下所示的Fuel库从HTTP请求接收JSON对象:
10003
我获取JSON对象的代码是:
{
'items': ['item1', 'item2', 'item3']
}
如何遍历'items'键?我尝试过:
Fuel.get("get_cameras").responseJson { request, response, result ->
var my_json = result.get().obj()
}
但它说它没有iterator()方法。我来自Python,可能以错误的方式考虑了这个问题,因为我看到了许多其他看似相似的问题,但似乎都与我想做的事情无关。
答案 0 :(得分:0)
您首先需要使用"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循环迭代数组,还可以使用JSONArray
函数扩展iterator
类,但是这样做会更加麻烦比它的价值还要高。