Can';t将双引号JSON从Android Java传递到Javascript
情景: TLDR;为什么我不能将(“”)从Android传递到JavaScript,只有(“”)起作用 我通过以下方式将一个JSON对象从Android发送到JavaScript:Can';t将双引号JSON从Android Java传递到Javascript,javascript,java,android,json,Javascript,Java,Android,Json,情景: TLDR;为什么我不能将(“”)从Android传递到JavaScript,只有(“”)起作用 我通过以下方式将一个JSON对象从Android发送到JavaScript: mWebView.loadUrl("javascript:foo(\"" + bar + "\")"); 据我所知,这将调用javascript函数foo(),并将bar的值传递给它 bar变量是一个JSON对象,例如: bar = "{'id':'"+barID+"','title':'"+barTitle+"
mWebView.loadUrl("javascript:foo(\"" + bar + "\")");
据我所知,这将调用javascript函数foo(),并将bar的值传递给它
bar变量是一个JSON对象,例如:
bar = "{'id':'"+barID+"','title':'"+barTitle+"'}";
现在,在javascript端,函数foo()执行以下操作:
function foo(json){
var completeJsonObject;
json = json.replace(/'/g, '"');
completeJsonObject = JSON.parse(json);
}
这非常有效,因为它将(')替换为(“”),然后可以解析json
然而,为了避免替换,我可以在java端用(“”)来格式化json,而不是像下面那样,对吗
bar = "{\"id\":\""+barID+"\",\"title\":\""+barTitle+"\"}";
不,只要我这么做,JavaScript就会给我一个意外的令牌错误
有没有比使用我的解决方案更好的方法来解决这个问题?mWebView.loadUrl(“javascript:foo(\“”+bar+“\”));被你的“输入”栏打断,javascript就混乱了。最好保留你的解决方案。我想这是有道理的。