Я пытаюсь преобразовать вложенную Карту в объект 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
}
(я пытался следовать этому примеру Установка HashMapв jsonobject )
Я называю это так
val input = mapOf(
"key1" to mapOf("inner_key1" to "foo"))
val output = convertToJson(input)
Что я не понимаю, почему
output.optJSONObject("key1")
равно нулю? Из того, что я понимаю, output.opt("key1")
возвращает Map<*, *>
.
Это примерно столько, сколько я получил. Я не уверен, что мой convertToJson
нуждается в исправлении, или если мое понимание нуждается в исправлении, в этом случае optJSONObject
не должен использоваться для вложенных типов, и я должен использовать opt
, если я знаю, что тип будет Map
.