我正在使用 GWT 和覆盖、JavaScript 覆盖类型(而不是 UI)来读取 JSON 输入中的双精度数组并将其发送到 Highcharts。只要没有数据点为空,以下就可以正常工作。
public final native JsArrayNumber getPoints() /*-{
return this.points;
}-*/;
但是,null 表示 Highcharts 中的缺失值。不幸的是,没有办法知道哪个索引为空,get() 方法将抛出 HostedModeException 说明
从 JSNI 方法“@com.google.gwt.core.client.JsArrayNumber::get(I)”返回了非双精度值:未定义类型的 JS 值,预期双精度
有趣的是,我自己可能会产生空值,而 toString() 方法工作得很好。
JsArrayNumber test = jsSeries.getPoints();
test.set(test.length()+2, 24.2);
System.out.println(test.toString());
System.out.println(test.length());
for (int i = 0; i < test.length(); i++) {
System.out.println(test.get(i));
}
Output:
163,1,276,0,547,0,628,,,24.2
10
163.0
1.0
276.0
0.0
547.0
0.0
628.0
(and here comes the exception at the first null entry).
令我感到奇怪的是,我无法查询空值,但我能够生成它们。我确信这是有正当理由的,而且我对 GWT 很陌生。
当某些条目可能为空时,使用覆盖来读取双值数组的适当方法是什么?
(现在我刚刚添加了另一个函数 isNull(index) 以便我可以自己检查)。