2012-09-14 72 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)