以下代码
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayMixed;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONString;
[...]
JsArrayMixed jsArray = JavaScriptObject.createArray().cast();
jsArray.push("something");
JSONArray jsonArray = new JSONArray(jsArray);
System.out.println(jsonArray.size());
当使用gwt-test-utils运行时,将打印"0"而不是预期的"1"。查看gwt-test-utils中的JSONArrayPatcher
,似乎给构造函数的值被完全忽略了。
是否有办法使这些行打印"1"?也许有办法修补JSONArray
的构造函数?
JSONArray
与JsArrayMixed
无关。JSONArray
为org.json.JSONArray
, JsArrayMixed
为com.google.gwt.core.client.JsArrayMixed
类型的gwt客户端对象。它们是如此完全来自不同的类层次结构,以至于它们不能相互理解。
如果你用JSONObject
实例或另一个JSONArray
实例来构造它,JSONArray
可能会工作。
你必须发明另一种方法来构造你的混合对象。
我来源:
[1] http://www.json.org/javadoc/org/json/JSONArray.html
[2] http://srcrr.com/java/google/gwt/2.2/reference/com/google/gwt/core/client/JsArrayMixed.html