Java 在Android中重新字符串化字符串
我有一个字符串,我想在Kotlin(Android)中对其进行字符串化,但似乎Java 在Android中重新字符串化字符串,java,android,json,kotlin,stringify,Java,Android,Json,Kotlin,Stringify,我有一个字符串,我想在Kotlin(Android)中对其进行字符串化,但似乎org.json.*不支持获取字符串并重新对其进行字符串化,相反,它总是首先尝试对其进行解析 val str=“test=\“123” val stringified=JSONObject(str).toString()//JSONException:无法将java.lang.String类型的值a转换为'JSONObject'` 此功能的用例是以安全的方式将数据传递给Webview中的JS val json=“te
org.json.*
不支持获取字符串并重新对其进行字符串化,相反,它总是首先尝试对其进行解析
val str=“test=\“123”
val stringified=JSONObject(str).toString()//JSONException:无法将java.lang.String类型的值a转换为'JSONObject'`
此功能的用例是以安全的方式将数据传递给Webview中的JS
val json=“test=\“123”
evaluateJavascript(“window.onData(${json})”)
//在JS端,它将如下所示:window.onData(test=“123”)
//这既无效又不安全,因为它为原始JS注入打开了大门
任何手动操作的尝试都将导致不安全且可能无效的JS字符串不应使用此示例:
val-unsecurejson=“${str.replace(“\\”,“\\\\”).replace(“\”,“\\\”).replace(“'”,“\\”)”)
期望的行为:
val json=jsonstringgifysting(“test=\“123\”)
evaluateJavascript(“window.onData(${json})”)
//呈现的JS:window.onData(“test=\“123\”)
Android中有没有一种简单的字符串化方法?最终使用了
JSONArray
类,并删除了数组包装以欺骗类将普通字符串字符串化
funJSonStringGifyString(str:String):String{
val jsonStr=JSONArray().put(str).toString()
返回jsonStr.substring(1,jsonStr.length-1)//删除第一个和最后一个字符
}
val serializedData=jsonStringifyString(“test=\“123\”);
evaluateJavascript(“window.onData(${serializedData})”)
//呈现的JS:window.onData(“test=\“123\”)