Преобразование в JSONObject и обратно в Котлин без Библиотеки - PullRequest
1 голос
/ 21 ноября 2019

Я пытаюсь преобразовать вложенную Карту в объект 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...