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!