Правильное формирование json-стринга kotlin
Мне нужно сделать такую строку:
{"chat": {"a": "get_history"}}
пробовал делать так:
val getHistory = JSONStringer().`object`().key("chat")
.value(JSONStringer().`object`().key("a").value("get_history").endObject().toString().replace("\'", "")).endObject().toString()
пробовал и так:
val jsonFormattedString = JSONTokener(jsonObject.toString()).nextValue().toString()
val jsonObject2 = JsonObject()
jsonObject2.addProperty("chat", jsonFormattedString)
по итогу получается постоянно такое:
{"chat":"{\"a\":\"get_history\"}"}
хотя эта часть получается:
{"a":"get_history"}
Пробовал убрать таким образом .replace("\\\'", "") в итоге ничего не получается. Как можно достичь того варианта что нужен изначально?
UPDATE
Самый худо-бедно работающий вариант:
val testValue: MutableMap<String, String> = HashMap()
testValue["chat"] = JSONStringer().`object`().key("a").value("get_history").endObject().toString()
и дальше стринг получать так:
testValue.toString().replace("=",":")
Может у кого будут какие замечания)
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Все мои варианты были конечно хороши, но они требовали очень много телодвижений. Например нужно было после формирования json и перегонки в стринг еще убирать какие-то символы. Это сложно и не очень правильно. Поэтому в итоге я сделал так:
JSONObject(mapOf(
"chat" to mapOf(
"a" to "get_history")).toString()
и как результат мы получаем адекватный jsonстринг.