Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengekstrak Data JSON Bersarang Dengan Cekap Menggunakan Penukar Gson Tersuai dalam Retrofit?

Bagaimana untuk Mengekstrak Data JSON Bersarang Dengan Cekap Menggunakan Penukar Gson Tersuai dalam Retrofit?

Susan Sarandon
Susan Sarandonasal
2024-11-19 04:49:02927semak imbas

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

Mengekstrak JSON Bersarang dengan Penukar Gson Tersuai dalam Retrofit

Banyak API memberikan respons dengan struktur JSON biasa di mana objek akar merangkumi bersarang medan "kandungan" yang mengandungi data yang dikehendaki. Walau bagaimanapun, kebanyakan POJO hanya memodelkan data dalam medan "kandungan", menyebabkan penyesuai jenis pengubahsuaian tidak dapat mengekstrak dan mengembalikan objek yang sesuai.

Untuk menangani perkara ini, penyahserialisasi Gson tersuai boleh dibangunkan untuk mengekstrak " kandungan" dan kembalikan objek terbenam. Begini caranya:

Deserializer Tersuai:

Buat kelas yang melaksanakan antara muka JsonDeserializer untuk jenis POJO yang dikehendaki. Contohnya, untuk POJO "Kandungan":

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);
    }
}

Konfigurasi Gson:

Daftarkan deserializer tersuai dengan contoh GsonBuilder:

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();

Tindakan Gson ini kini boleh digunakan untuk menyahsiri respons JSON terus ke objek "Kandungan" yang dibenamkan.

Penyepaduan Retrofit:

Akhir sekali, gunakan penukar Gson tersuai apabila mencipta contoh Retrofit:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();

Kini, apabila Retrofit menyahsiri respons API, ia akan menggunakan penukar tersuai untuk mengekstrak medan "kandungan" sahaja dan mengembalikan jenis POJO yang sesuai.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Data JSON Bersarang Dengan Cekap Menggunakan Penukar Gson Tersuai dalam Retrofit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn