Kotlin 如何将 JSONArray 映射到类型(流)

标签 kotlin functional-programming stream

我正在尝试映射我的 JSONArrayArray<String?> .

我这样做是这样的:

fun getTextResponse(responseJson: JSONObject): Array<String?>{
        val resultData = responseJson.getJSONArray("data")
                .getJSONObject(0)
                .getJSONArray("result")

        return resultData.map{ it.getString("label") }.toTypedArray()
}

但是it未键入为 JSONObject ,有什么办法可以强制输入JSONObject ?

最佳答案

问题是 resultData类型为 JSONArray ,这是一个 JSON 实用程序类,不会覆盖 Kotlin/Java Array接口(interface),因此没有 map功能。

您必须按索引检索每个字符串并生成新数组,如下所示:

fun getTextResponse(responseJson: JSONObject): Array<String?> {
    val resultData = responseJson.getJSONArray("data")
            .getJSONObject(0)
            .getJSONArray("result")
    return Array<String?>(resultData.length()) { i -> resultData.getString(i) }
}

关于Kotlin 如何将 JSONArray 映射到类型(流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136316/

相关文章:

scala - 从 Scala 中的 Future Options 获取 Future 对象

c++ - 为什么 std::copy(从 istream 到 ostream)会引发 ios::failure 异常?

c# - Stream.Copy 是否通过管道传输?

android - Kotlin - lateinit VS 任何? =空

android - TextInputLayout启用= false后如何使TextInputEditText中的文本变为灰色?

java - 不推荐在没有设置文件的情况下执行 Gradle : How to write a setting file and where to save

scala - 为什么延迟工厂方法在F的上下文中有返回值

android - ObservableField 值更改未传播

函数内的 JavaScript 函数

java - InputStreamReader 与 FileReader