第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 retrofit2 處理包裹在一個 JSON 對象中的 JSON 對象?

如何使用 retrofit2 處理包裹在一個 JSON 對象中的 JSON 對象?

慕斯709654 2023-06-08 19:27:21
我想使用改造接收項目并將它們解析為 Java 列表。但是,服務(wù)器響應(yīng)不是 JSON 數(shù)組,而是包含項目的 JSON 對象。這就是為什么改造不能只將響應(yīng)轉(zhuǎn)換為 java 列表的原因。響應(yīng)看起來像這樣:{    "4": {        "key": "value",        ...    },    "5": {        ...    },     ...}通常,我會嘗試收到這樣的物品:@GET("items")Call<List<Item>> getItems();但這顯然行不通,Retrofit 回應(yīng):Expected BEGIN_ARRAY but was BEGIN_OBJECT使用改造將此對象轉(zhuǎn)換為 Java 列表的最佳選擇是什么?
查看完整描述

2 回答

?
Helenr

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ù)組中。


查看完整回答
反對 回復(fù) 2023-06-08
?
慕工程0101907

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 生成器這樣的東西來獲得一個想法;)


查看完整回答
反對 回復(fù) 2023-06-08
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號