我在 Autobeans 的上下文中以某种方式与数组和 JSNI 作斗争。
在我的一个 GWT 项目中,我使用 JSON 从后端检索数据。
在客户端上检索到数据后,我想使用自定义可视化小部件(用 javascript 开发)对其进行可视化。
以下是组件:
JSON结构:
{'ids':[1,2,3,4],'data':[[1.0],[1.0,2.0],[1.0,2.0,3.0] ... ]}
基本上我的 json 有效负载中有两个数据集。ids是一个 ints ( int[]
) 数组,data是一个 float 数组 ( float[][]
)
当然有不同的方法来解析客户端上的数据。我决定使用 AutoBeans。所以我为我的 json 结构定义了一个接口。
自动豆:
interface MyData {
List<Integer> ids;
List<List<Float>> data;
}
解析数据工作正常。
我的自定义可视化小部件有一个 API 函数来设置如下所示的数据:
function api_setData(ids,data) {
//ids should be an Array of Ints
//data should be an array of array of Floats.
}
问题是使用 JSNI 我不能使用普通的 Java 数组。我必须使用JsArray
.
public final native void setData(JsArrayInteger ids,JsArray<JsArrayInteger> data /*-{
this.api_setData(ids,data);
}-*/;
所以我必须将我的 AutoBean 属性(data和ids)转换为 JsArray 实例。有没有更好/更好的方法来做到这一点?
或者也许我应该使用JSONParser
而不是AutoBeans
更有效?