GWT - JSNI - 传递json对象

时间:2012-09-14 22:10:07

标签: 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 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本机接口函数?

2 个答案:

答案 0 :(得分:3)

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

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

drawStock(element,cname,jsdata);

答案 1 :(得分:0)

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

series: eval(sdata)