2
由於我對兩個不同的Web響應使用了相同的對象結構,因此我面臨反序列化的問題。在'搜索'中,我得到了一些對象,而在'細節'中,我只得到一個對象。gson.fromJson - 反序列化失敗
查詢碼:
InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=search&q=" + query);
Reader reader = new InputStreamReader(source);
Gson gson = new Gson();
SearchObj searchResponse = gson.fromJson(reader, SearchObj.class);
詳細代碼:
InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=detail&id=" + id);
從服務我得到的響應與同一對象hireachy TopObject - > SearchResponse - >響應,但在第一種情況下(搜索)我得到Response []的數組,並且在第二種情況下(Details)我得到單個Response對象。
明顯地,我的反序列化在第二種情況下失敗了,因爲代碼需要響應數組而不是一個響應。
我意識到我不能改變對象的名稱,就像我可以使用註解@SerializedName更改屬性的名稱。
有什麼建議嗎?
製作另一個域對象並分別對待它們,TopObject - > SearchResponse - > Response []和TopObject - > DetailsResponse - > Response。 – yorkw
由於我不能註釋類名,我怎樣才能分別處理「Response」對象和「Response []」對象數組? – NiTiN
也許你可以粘貼兩個響應的JSON源?也請貼上你的對象heirarchy。謝謝 – styler1972