Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT-JSNI-传递json对象_Json_Gwt_Double Quotes_Jsni - Fatal编程技术网

GWT-JSNI-传递json对象

GWT-JSNI-传递json对象,json,gwt,double-quotes,jsni,Json,Gwt,Double Quotes,Jsni,我有一个类似下面的json- String sdata = "[{ name : "AAPL", data:[[1112832000000,43.56],[1112918400000,43.74],[1113177600000,41.92],[1113264000000,null],[1113350400000,null]], tooltip: {valueDecimals: 2}}]"; 我使用JSNI将其从java传递到javascript public static native Jav

我有一个类似下面的json-

String sdata = "[{ name : "AAPL", data:[[1112832000000,43.56],[1112918400000,43.74],[1113177600000,41.92],[1113264000000,null],[1113350400000,null]], tooltip: {valueDecimals: 2}}]";
我使用JSNI将其从java传递到javascript

public static native JavaScriptObject drawStock(Element element,String cname, String sdata) /*-{ var chart = new $wnd.Highcharts.StockChart({ chart : { renderTo : element }, rangeSelector : { selected : 1 }, title : { text : cname }, series : sdata //=====this is where the json should be assigned. }); return chart; }-*/; 公共静态本机JavaScriptObject drawStock(元素、字符串cname、字符串sdata)/*-{ var图表=新的$wnd.Highcharts.StockChart({ 图表:{ renderTo:元素 }, 范围选择器:{ 选定:1 }, 标题:{ 文本:cname }, series:sdata/====这是应该分配json的地方。 }); 收益表; }-*/; 上面的本机函数不能像预期的那样工作,因为“我相信”,sdata变量周围有一个双引号,因此javascript不认为它是json对象


如何在没有引号的情况下将json对象从java传递到javascript本机接口函数?

在您的示例中,您将
系列
分配给包含json对象的字符串,而不是对象本身。要将其转换为对象,请使用
eval

series: eval(sdata)

使用safeEval函数在java中进行安全评估

JavaScriptObject jsdata=JsonUtils.safeEval(sdata.toString())

提取库(元素、cname、jsdata)