Я строю древовидную структуру, на которую объект ссылается так:
public class ProjectObjectOL extends JavaScriptObject {
protected ProjectObjectOL() { }
public final native boolean getStatus() /*-{ return this.status; }-*/;
public final native String getError() /*-{ return this.error_message; }-*/;
public final native JsArray<ProjectObjectOL> getChildren() /*-{ this.children; }-*/;
}
Моя проблема в том, что я не могу получить детей от объекта. Я проверил это и уверен, что передаваемая обратно структура JSON состоит из объекта, который содержит массив дочерних элементов этого типа, который может содержать дочерние элементы и т. Д.
... но при попытке получить доступ даже к самой простой информации о дочерних элементах, длине массива, он каждый раз возвращает 0. Я безуспешно пытался выяснить, что он делает не так, все остальные данные возвращаются нормально, но этот фрагмент НЕ будет возвращать потомков. Вот пример того, как я мог бы (напрямую) получить доступ к длине для тестирования:
JSONObject oResults = (JSONObject) JSONParser.parse(response.getText());
ProjectListOL testoutputOL = oResults.isObject().getJavaScriptObject().cast();
ProjectObjectOL testObject = testoutputOL.getProjectList().get(1);
Window.alert(testObject.getChildren().length()+"");
ProjectListOL содержит массив ProjectObjectOL. В приведенном выше примере я просто взял тот, который, как я знаю, имеет детей. Я использую ColdFusion для бэкэнда, который возвращает объект JSON. Еще раз, я вывел этот объект несколько раз, как в GWT, так и за его пределами (непосредственно выгружая объект JSON из файла), проверяя, что объект действительно настроен так, как я ожидаю, что он будет установлен.