如何在 Kotlin Android 中将字符串转换为 JSON 对象 [重复]
Posted
技术标签:
【中文标题】如何在 Kotlin Android 中将字符串转换为 JSON 对象 [重复]【英文标题】:How to convert String to JSON Object in Kotlin Android [duplicate] 【发布时间】:2021-10-10 03:19:32 【问题描述】:我需要帮助来转换 JSON 对象中的字符串。
这是我从 WebView 得到的响应
webView.evaluatejavascript(
"document.getElementById('formio-submitted-data').textContent"
) value ->
回应是
value = ""\"data\":\"plantName\":\"Bhanu\",\"address\":\"Abcd\",\"totalCapacity\":25,\"isValid\":true""
我得到的响应是一个字符串。我必须将其转换为 JSON。 我怎样才能做到这一点?
【问题讨论】:
这对bezkoder.com/kotlin-parse-json-gson有帮助吗? 我的 JSON 包含 \ 我必须将值转换为 JSON 对象并转发它。我不知道如何实现它。 你能提供有`\`的实际例子吗? 是这样的。 ""\"data\":\"FIRSTFIELD\":\"1\",\"FIRSTFIELD2\":\"2"" 这是我得到的 JSON 可以将 \" 替换为单引号,然后尝试使用相同的函数 【参考方案1】:试试这个
val jsonParser = JsonParser()
val jsonObject = jsonParser.parse("your jsonString with backslash").asJsonObject
【讨论】:
我在 val resp 之前这样做了: JsonObject = JsonParser().parse(value).asJsonObject val jsonObject = JsonObject() 。但是我的应用程序崩溃了,它给了我错误 A/chromium: [FATAL:jni_android.cc(249)] Please include Java exception stack in crash report A/libc: Fatal signal 5 (SIGTRAP), code -6 (SI_TKILL) in tid 4443 只是为了缩小问题的范围,您可以尝试不使用\。我的意思是手动删除它们,看看你是否仍然得到这个错误。只是为了找出这个例外是因为 \ 我正在尝试手动删除 \ 但此 value.replace("//","") 不起作用。或者我应该一个一个地迭代。 Kotlin 没有 replaceAll 功能【参考方案2】:我有办法了。
问题出在我的 webview 脚本中。
我做的是
doneButton.setOnClickListener
var view=it
webView.evaluateJavascript(
"JSON.parse(document.getElementById('formio-submitted-data').textContent)"
) value ->
if(value.length!=2)
val resp: JsonObject = JsonParser().parse(value).asJsonObject
val jsonObject = JsonObject()
jsonObject.add("data", resp)
我已经更改了 evaluateJavaScript 中的代码。
【讨论】:
以上是关于如何在 Kotlin Android 中将字符串转换为 JSON 对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 kotlin 在 android studio 中将按钮与网站链接
在 Kotlin Android 中将值传递给函数时进行编译时间检查
如何在 Kotlin 中将 listView 转换为 RecyclerView