我有一个字符串化的JSON对象,我想把它作为字符串传递到我的WebView中。如果我的JSON字符串是这样一个简单的一级JSON:
JSONObject object = new JSONObject;
object.put("key1", "val1");
object.put("key2", "val2");
String myValue = object.toString();
evaluateJavascript
这样地:
webView.evaluateJavascript("console.log('" + myValue + "')", null)
我得到的控制台日志是:
{"key1": "val1", "key2", "val2"}
JSONObject object = new JSONObject();
object.put("key1", "val1");
JSONObject innerObject = new JSONObject();
innerObject.put("key3","val3");
object.put("key2", innerObject);
String myValue = object.toString();
也一样跑
评估JavaScript
{"key1":"val1", "key2": "{"key3": "val3"}"}
这不是我所期望的!我期待这样的输出:
{"key1":"val1", "key2": "{\"key3\": \"val3\"}"}
内部JSON的引号应该转义。如果他们没有逃脱,那就试着
JSON.parse
它将导致分析错误。
我甚至使用了一个调试器来检查
myValue
就在它被传递到
"{"key1":"val1", "key2": "{\"key3\": \"val3\"}"}"
那么为什么跑步
评估JavaScript
注:
唯一能解决这个问题的方法就是在
评估JavaScript
myValue.replace("\\", "\\\\")
也就是说,替换任何转义字符(
\
\\
). 这样,神秘的剥离将删除一个逃逸字符,但留下另一个在那里,使我能够成功
JSON.parse文件
是的。