【发布时间】:2020-03-16 23:01:03
【问题描述】:
我正在尝试将嵌套 Map 转换为 JSONObject,如下所示:
fun convertToJson(input: Map<String, Any>): JSONObject {
val jsonObject = JSONObject()
input.forEach { (key, value) ->
if (value is Map<*, *>) {
val iterator = value.entries.iterator()
while (iterator.hasNext()) {
val pairs = iterator.next()
(pairs.key as? String)?.let { k ->
pairs.value?.let { v ->
jsonObject.put(k, v)
}
}
}
}
jsonObject.put(key, value)
}
return jsonObject
}
(我试着按照这个例子Putting HashMap<String, object> in jsonobject)
我这样称呼它
val input = mapOf(
"key1" to mapOf("inner_key1" to "foo"))
val output = convertToJson(input)
我不明白,为什么是
output.optJSONObject("key1") 空?
据我了解,output.opt("key1") 返回Map<*, *>。
这就是我所知道的。我不确定我的convertToJson 是否需要修复,或者我的理解是否需要更正,因为optJSONObject 不应该用于嵌套类型,如果我知道类型将是@987654330,我应该使用opt @。
【问题讨论】: