我有一个像下面的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; }-*/;
上面的本机函数没有按预期工作,因为“我相信”,sdata变量有一个双引号,因此不被javascript视为json对象。
如何将没有引号的java中的json对象传递给javascript本机接口函数?
答案 0 :(得分:3)
使用safeEval函数在java中安全评估。
JavaScriptObject jsdata = JsonUtils.safeEval(sdata.toString());
drawStock(element,cname,jsdata);
答案 1 :(得分:0)
在您的示例中,您将series
分配给包含JSON对象的字符串,而不是对象本身。要将其转换为对象,请使用eval
:
series: eval(sdata)