2 回答

TA貢獻1780條經(jīng)驗 獲得超4個贊
我個人會分 2 個步驟執(zhí)行此操作,以避免必須為反序列化編寫自定義適配器。
我會寫這樣的界面:
@GET("items") Call<Map<String, Item>> getItems();
一旦您根據(jù)響應(yīng)調(diào)用 API,我就會調(diào)用values()
.
需要考慮的是,因為 API 返回的是地圖而不是列表,所以無法保證您生成的任何列表的順序都是一致的。json 標準不定義對象的任何順序,除非它們在 json 數(shù)組中。

TA貢獻1887條經(jīng)驗 獲得超5個贊
當(dāng)您說響應(yīng)是 List 時,JSON 應(yīng)該是“ARRAY”。
例如:
[ "a", "b" ]
或者
{
"xxx": [ "a", "b" ]
}
在任何一種情況下,您想要解析的對象如下所示:
List<String>對于第一個。
Thing對于第二個。
看起來Thing像:
class Thing {
public List<String> xxx;
}
你正在嘗試解析這個:
{
"4": {
"key": "value",
...
},
"5": {
...
},
...
}
那么根據(jù)以上信息,您認為解析后的響應(yīng)是什么樣的?(提示:您可以嘗試像這個Java POJO 生成器這樣的東西來獲得一個想法;)
添加回答
舉報