【问题标题】:GWT - JSNI - passing json objectGWT - JSNI - 传递 json 对象
【发布时间】:2012-09-14 22:10:07
【问题描述】:

我有一个像下面这样的 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 本机接口函数?

【问题讨论】:

    标签: json gwt double-quotes jsni


    【解决方案1】:

    使用 safeEval 函数在 java 中安全地求值。

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

    drawStock(element,cname, jsdata);

    【讨论】:

      【解决方案2】:

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

      series: eval(sdata)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 1970-01-01
        相关资源
        最近更新 更多