如何使用Kotlin迭代JSON对象内部的列表

时间:2018-10-27 14:55:24

标签: json kotlin

我正在使用如下所示的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,可能以错误的方式考虑了这个问题,因为我看到了许多其他看似相似的问题,但似乎都与我想做的事情无关。

1 个答案:

答案 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类,但是这样做会更加麻烦比它的价值还要高。