2012-09-14 125 views
3

我有一个像如下─GWT - 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中的JSON。

 
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对象上面的原生功能不起作用。

如何将json对象从不带引号的java传递给javascript本地接口函数?

回答

3

使用safeEval函数在java中安全评估。我们可以使用JavaScriptObject jsdata = JsonUtils.safeEval(sdata.toString());

drawStock(element,cname,jsdata);

0

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

series: eval(sdata)