GWT-JSNI-传递json对象
我有一个类似下面的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
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)