0
我有以下模式:GSON:空JSON轉換錯誤
public class EventSchedule {
private int id;
private String date;
private String time;
private JSONArray tickets;
private JSONArray extras;
private JSONObject venue;
public EventSchedule(int id, String date, String time, JSONArray tickets,
JSONArray extras, JSONObject venue) {
this.id = id;
this.date = date;
this.time = time;
this.tickets = tickets;
this.extras = extras;
this.venue = venue;
};
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public JSONArray getTickets() {
return tickets;
}
public void setTickets(JSONArray tickets) {
this.tickets = tickets;
}
public JSONArray getExtras() {
return extras;
}
public void setExtras(JSONArray extras) {
this.extras = extras;
}
public JSONObject getVenue() {
return venue;
}
public void setVenue(JSONObject venue) {
this.venue = venue;
}
}
和我有一個JSON陣列I想轉換到上面用下面的代碼的所述模型的ArrayList
:
Gson gson = new Gson();
Type type = new TypeToken<List<EventSchedule>>(){}.getType();
List<EventSchedule> schedules = gson.fromJson(mEvent.getSchedules().toString(), type);
但是,當我試圖運行這個我的活動崩潰。這使我對我的第一個錯誤:
Expected BEGIN_OBJECT but was BEGIN_ARRAY
所以我想這是不可能的轉換與JSONArray
的模型,因此我加入transient
排除所有JSONArray
列,這一次它運行,並沒有崩潰。
現在對於我的第二個問題,每當我嘗試獲得JSONObject
場地時,它總是變空。我不知道爲什麼。
所以我現在的問題是如何解決我的問題JSONArray
和JSONObject
,以便我能夠轉換爲ArrayList
。
你混淆了事情。除非添加了自定義類型適配器(您可能希望使用'com.google.gson.Json ***'),否則Gson不能使用'JSON ***'。你的'EventSchedule'是原語和JSON樹對象的混合 - 你應該用像'EventSchedule'這樣的映射替換JSON樹,甚至不要使用'Json ***'。另外,'預計BEGIN_OBJECT但是BEGIN_ARRAY'是一個過於一般的錯誤,可能由於一千個原因而發生:發佈_minimum_ JSON文檔可能會有所幫助。另外,我懷疑'票據'是錯誤的根源(JSON中的'[...]',但'JSONArray'的期望對象)。 –
謝謝,但我很困惑,你說我應該怎麼做?你說什麼映射我應該替換我的JSON ***? – user3718908
扔掉'JSON ***'類型並用'EventSchedule'等類替換'JSON ***'字段。 'JSONArray'應該替換爲'List <...>'或者一個數組。 –