所以我有此JSON對象來我這大致有以下格式:如何在GWT中使用JSNI覆蓋類型提取嵌套的JSON對象?
{ "student":{"field1":"","field2":"",....},
"subjects":[{},{},....,{}] }
我如何提取「學生」,用疊加在GWT「主體」的陣列中每個對象的全部內容類型和JsonUtils方法?
所以我有此JSON對象來我這大致有以下格式:如何在GWT中使用JSNI覆蓋類型提取嵌套的JSON對象?
{ "student":{"field1":"","field2":"",....},
"subjects":[{},{},....,{}] }
我如何提取「學生」,用疊加在GWT「主體」的陣列中每個對象的全部內容類型和JsonUtils方法?
的最簡單的方法是製作一個JavaScriptObject
,將包裝器對象公開爲Java,並將student
和subjects
屬性的獲取器作爲其他JavaScriptObject
和JsArray
。
final class StudentAndSubjects extends JavaScriptObject {
protected StudentAndSubjects() { }
public native Student getStudent() /*-{ return this.student; }-*/;
public native JsArray<Subject> getSubjects() /*-{ return this.subjects; }-*/;
}
final class Student extends JavaScriptObject {
protected Student() { }
public native String getField1() /*-{ return this.field1; }-*/;
public native String getField2() /*-{ return this.field2; }-*/;
…
}
final class Subject extends JavaScriptObject {
protected Subject() { }
…
}
然後,您可以使用它們像這樣:
StudentAndSubjects sas = JsonUtils.safeEval(json);
Student student = sas.getStudent();
JsArray<Subject> subjects = sas.getSubjects();
for (int i = 0, l = subjects.length(); i < l; i++) {
Subject subject = subjects.get(i);
…
}
它看起來像你的學生是一個嵌套的JSON對象
JSONObject obj = new JSONObject(jsonString);
JSONObject mystudent = obj.getJSONObject("student");
String myfield1 = mystudent.getString("field1");
「主題」 看起來像一個數組....對於您可以使用JSONArray和getJavaScriptObject() http://www.gwtproject.org/javadoc/latest/com/google/gwt/json/client/JSONArray.html
感謝。雖然我很確定那就是我正在做的。然而,它給了我一個 java.lang.ClassFormatError:類中的非法方法名稱「 $」(即我的等價的StudentAndSubjects) –
haitian
2014-09-30 15:50:24
Aaaaannnnddd將一些簡單的調試整理出來。有些方法沒有被聲明爲最終的問題:( – haitian 2014-09-30 22:12:28