3

我有一个像下面这样的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 图表 = 新 $wnd.Highcharts.StockChart({
           图表 : {
               renderTo : 元素
           },

           范围选择器:{
               已选择:1
           },

           标题 : {
               文本:cname
           },

           series : sdata //=====这是应该分配 json 的地方。

           });

返回图表;

}-*/;

上面的本机函数不能按预期工作,因为“我相信”,sdata 变量有一个双引号,因此不被 javascript 视为 json 对象。

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

4

2 回答 2

3

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

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

drawStock(元素,cname,jsdata);

于 2012-10-18T21:22:44.363 回答
0

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

series: eval(sdata)
于 2012-09-16T09:10:33.723 回答