在GWT中,我的代码中有一个JsArray <JavaScriptObject>。它或多或少是JSON对象的列表,但其类型为JsArray <JavaScriptObject>。它基本上必须采用这种格式,因为我使用JSNI将它作为参数传递给某些外部JavaScript代码。麻烦的是,我也希望Java代码使用此值。在Java中,我更喜欢处理类型为List <JSONObject>的对象。不过,我还没有真正找到在这两件事之间进行转换的好方法。我能做的最好的事情是线性遍历数组以构建所需的新类型:
public List<JSONObject> getData() {
LinkedList<JSONObject> list = new LinkedList<JSONObject>();
for (int i = 0; i < data.length(); ++i) {
list.add(new JSONObject(data.get(i)));
}
return list;
}
我很不幸吗?还是有一种很好的快速方法来在这两种类型之间进行转换?
(返回值的JSONArray也许也可以...但是实现List接口的方法很好)。
之所以不能轻易JsArray
转换为该List
接口的任何Java实现,是因为JsArray
它只是一个好的JavaScript数组的包装。这允许对其进行一些非常快速的操作(因为JSON是JS的一部分),但是以不与其余“ Java”代码“兼容”为代价。因此,您必须问自己,速度是否是一个重要因素,如果转换为“ Java”列表(当然,它在内部只是一个JS数组),将会损失多少。
AFAIR,我一直无法找到这种情况的理想解决方案-但就我而言,我立即使用了JsArray对象来创建POJO并将其进一步传递。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句