我有一个字符串,我想在kotlin(android)中字符串化,但似乎 org.json.*
不支持获取字符串并重新对其进行字符串化,相反,它总是先尝试解析它。
val str = "test=\"123\""
val stringified = JSONObject(str).toString() // JSONException: Value a of type java.lang.String cannot be converted to `JSONObject`
此功能的用例是以安全的方式将数据传递给webview中的js。
val json = "test=\"123\""
webview.evaluateJavascript("window.onData(${json})")
// on the JS side it will look like this: window.onData(test="123")
// this is both invalid and insecure since it opens the door for raw JS injection
任何手动执行的尝试都会导致不安全的js字符串,而且可能是无效的
不应使用此示例: val insecureJSON = "'${str.replace("\\", "\\\\").replace("\"", "\\\"").replace("'", "\'")}'"
期望的行为:
val json = jsonStringifyString("test=\"123\"")
webview.evaluateJavascript("window.onData(${json})")
// rendered JS: window.onData("test=\"123\"")
在android中有没有一种简单的字符串化方法?
1条答案
按热度按时间zhte4eai1#
最后使用了
JSONArray
类并移除数组 Package 以欺骗类将普通字符串字符串化