首頁 > Java > java教程 > 主體

如何在 Retrofit 中使用自訂 Gson 轉換器高效提取巢狀 JSON 資料?

Susan Sarandon
發布: 2024-11-19 04:49:02
原創
924 人瀏覽過

How to Efficiently Extract Nested JSON Data Using a Custom Gson Converter in Retrofit?

使用Retrofit 中的自訂Gson 轉換器來擷取巢狀JSON

許多API 提供具有通用JSON 結構的回應,其中根物件包含嵌套物件包含所需資料的「內容」欄位。然而,大多數 POJO 只對「內容」欄位中的資料進行建模,使得改造類型適配器無法提取並傳回適當的物件。

為了解決這個問題,可以開發一個自訂的 Gson 反序列化器來提取「 content」欄位並傳回嵌入的物件。操作方法如下:

自訂反序列化器:

建立一個類,實作所需 POJO 類型的 JsonDeserializer 介面。例如,對於「Content」POJO:

class ContentDeserializer implements JsonDeserializer<Content> {
    @Override
    public Content deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
        throws JsonParseException {
        // Extract the "content" element
        JsonElement content = je.getAsJsonObject().get("content");

        // Deserialize the content using a new Gson instance
        return new Gson().fromJson(content, Content.class);
    }
}
登入後複製

Gson 配置:

使用GsonBuilder 實例註冊自訂反序列化器:

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();
登入後複製
使用GsonBuilder 實例註冊自訂反序列化器:

此Gson 實例現在可用於將JSON 回應直接反序列化為嵌入的「內容」

Retrofit 整合:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();
登入後複製
最後,在建立Retrofit 實例時使用自訂的Gson 轉換器:

現在,當Retrofit 反序列化時API 回應,它將使用自訂轉換器僅提取「內容」欄位並傳回適當的POJO 類型。

以上是如何在 Retrofit 中使用自訂 Gson 轉換器高效提取巢狀 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板