Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menyesuaikan Penukar GSON Retrofit untuk Mengekstrak Objek JSON Bersarang?
Menyesuaikan Retrofit GSON Converter untuk Mendapatkan semula Objek JSON Bersarang
Apabila menggunakan API yang membenamkan data yang anda inginkan dalam struktur JSON bersarang, memanfaatkan GSON dengan Retrofit boleh mencabar. Soalan ini meneroka penyelesaian untuk mengekstrak objek kandungan tertentu daripada respons API bersarang.
Respons JSON yang dipersoalkan mengikut corak yang mana data yang anda perlukan diletakkan dalam medan "kandungan". Matlamatnya ialah untuk mencipta penukar GSON yang mendapatkan semula kandungan ini secara langsung, tanpa menghiraukan lapisan luar.
Penyelesaian: Mencipta Penyahserialisasi Tersuai
Penyelesaian berkisar tentang mencipta tersuai deserializer yang memfokuskan pada mengekstrak objek terbenam. Penyahserialisasi mengatasi kaedah "deserialisasi" dan melaksanakan langkah berikut:
Mendaftar Deserializer dan Mencipta Gson
Untuk menjadikan deserializer tersuai tersedia untuk Retrofit, ia perlu didaftarkan menggunakan GsonBuilder. Daftarkan contoh berasingan untuk setiap jenis yang anda temui dengan JSON bersarang. Contoh Gson yang terhasil kemudiannya boleh digunakan dalam klien Retrofit.
Contoh Pelaksanaan
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();
Dengan menggunakan pendekatan ini, klien Retrofit anda boleh menyahsiri data yang anda inginkan dengan lancar objek, walaupun apabila ia sangat bersarang dalam respons API.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Penukar GSON Retrofit untuk Mengekstrak Objek JSON Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!