我想将多个值从Android WebView传递到JavaScript。 问题是,我在JS中收到的字符串绝对是原始的(就像用纯文本显示的控制字符一样)。
所以我的具体问题是我从Java发送以下字符串:
final String chartData = "{ \"data\": 1000, a: 10, b: 30, c: [ 5, 10, 15 ] }";
我收到的绝对是原始的:
"{ \"data\": 1000, a: 10, b: 30, c: [ 5, 10, 15 ] }"
但是我想要这个(java解析的字符串):
{ "data": 1000, a: 10, b: 30, c: [ 5, 10, 15 ] }
我现在不处理任何JSON,因此您可以忽略JSON字符串中的“syntaxproblem”。我只是想先正确接收String。到目前为止,这是我的代码:
WebViewActivity.java
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setAllowFileAccessFromFileURLs(true);
final String chartData = "{ \"data\": 1000, a: 10, b: 30, c: [ 5, 10, 15 ] }";
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
webView.loadUrl("javascript:showAlert('message from android')");
webView.loadUrl("javascript:createChart('"+chartData+"')");
}
});
webView.loadUrl("file:///android_asset/report.html");
report.html
<div id="debugContainer">
debug
</div>
的script.js
function createChart(lineChartData){
document.getElementById('debugContainer').innerHTML = JSON.stringify(lineChartData, null, 4);}
答案 0 :(得分:1)
您收到的是字符串化的JSON,您可以将它作为常规对象JSON.parse(),或者替换转义字符。通过http发送的消息总是一个字符串。您需要使用字符串或将其解析为json。