我正在android上使用Retrofit和Gson構建一個reddit客戶端來發出API請求。我做了檢索徵求意見後Gson反序列化reddit評論android上的API響應
https://www.reddit.com/r/pics/comments/68pxct/black_out_panels_with_a_twist/.json
的請求雖然deserialising我遇到了一個問題的響應,響應有一個字段children
返回一個List<CustomObject>
有時等一個List<String>
倍。
我嘗試了多個選項,使用JsonAdapter
與自定義JsonDeserializer
,沒有工作,然後嘗試使用它與TypeAdapter
,仍然沒有工作。
我場是這樣,
@Expose
@JsonAdapter(CustomDeserializer.class)
private List<T> children;
在這兩種這些情況下,我打了,我用與泛型類的類未發現異常。我在Deserializer中有斷點,它甚至沒有開始執行代碼。評論@JsonAdapter註釋導致類未找到異常消失。
我然後試圖接收PARAMS爲通用JsonArray
型,但仍然遇到錯誤
@Expose
private JsonArray children;
所致:java.lang.IllegalStateException:預期BEGIN_OBJECT但在第1行的列210200路徑STRING $ [1] .data.children [12] .data.replies
爲什麼我無法將它轉換爲JsonArray。我認爲這應該工作,不管內在類型是什麼。
理想情況下,我想讓JsonAdapter方法工作。
編輯:
之所以將其轉換爲JsonArry沒有工作是因爲有另一場(replies
),這也返回了多個數據類型。這應該是顯而易見的錯誤,我猜它已經過去了我的睡前時間。所以將字段轉換爲JsonArray和JsonObject。
也有人建議泛型不能很好地使用JsonAdapter註釋,我會測試其他解決方案並更新回來。
的'答覆'在你的數據中以JSON中的一個引號開始,而不是一個對象'{}' –
你可以在JSON中搜索'「回覆」:「''' –
@ cricket_007確實,回覆確實是這樣開始的。但是因爲我將子對象反序列化爲一個JsonArray,這應該不重要? –