自訂Retrofit GSON 轉換器以擷取巢狀JSON 物件
使用在巢狀所需資料的API 時,透過Retrofit 利用GSON可能具有挑戰性。此問題探討了從嵌套 API 回應中提取特定內容物件的解決方案。
相關 JSON 回應遵循一種模式,其中您需要的資料放置在「內容」欄位中。目標是建立一個直接檢索此內容的 GSON 轉換器,而忽略外層。
解決方案:建立自訂反序列化器
此解決方案圍繞著建立自訂反序列化器解串器專注於擷取嵌入的物件。反序列化器會覆寫「反序列化」方法並執行以下步驟:
註冊反序列化器並創建Gson
要使自定義反序列化器並創建Gson
要使自定義反序列序列化器可用於Retrofit,需要使用GsonBuilder 進行註冊。為您遇到的巢狀 JSON 的每種類型註冊一個單獨的實例。然後可以在 Retrofit 用戶端中使用產生的 Gson 實例。
class MyDeserializer<T> implements JsonDeserializer<T> { @Override public T deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException { JsonElement content = je.getAsJsonObject().get("content"); return new Gson().fromJson(content, type); } } Gson gson = new GsonBuilder() .registerTypeAdapter(Content.class, new MyDeserializer<Content>()) .registerTypeAdapter(DiffContent.class, new MyDeserializer<DiffContent>()) .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create(gson)) .build();範例實作透過採用這種方法,您的Retrofit 用戶端可以無縫地反序列化您想要的資料對象,即使它們深深嵌套在API 回應中。
以上是如何自訂 Retrofit 的 GSON 轉換器來提取巢狀 JSON 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!