"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استخراج بيانات JSON المتداخلة بكفاءة باستخدام محول Gson مخصص في التعديل التحديثي؟

كيفية استخراج بيانات JSON المتداخلة بكفاءة باستخدام محول Gson مخصص في التعديل التحديثي؟

تم النشر بتاريخ 2024-12-21
تصفح:807

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

استخراج JSON المتداخل باستخدام محول Gson مخصص في التعديل التحديثي

توفر العديد من واجهات برمجة التطبيقات استجابات ببنية JSON شائعة حيث يشتمل الكائن الجذر على كائن متداخل حقل "المحتوى" الذي يحتوي على البيانات المطلوبة. ومع ذلك، فإن معظم POJOs تصمم فقط البيانات الموجودة في حقل "المحتوى"، مما يترك محول النوع التحديثي غير قادر على استخراج الكائن المناسب وإعادته.

لمعالجة هذا، يمكن تطوير أداة إلغاء تسلسل Gson مخصصة لاستخراج " content" وإرجاع الكائن المضمن. وإليك الطريقة:

أداة إلغاء التسلسل المخصصة:

قم بإنشاء فئة تطبق واجهة JsonDeserializer لنوع POJO المطلوب. على سبيل المثال، بالنسبة لـ "المحتوى" POJO:

class ContentDeserializer تطبق JsonDeserializer { @تجاوز إلغاء تسلسل المحتوى العام (JsonElement je، نوع النوع، JsonDeserializationContext jdc) يرمي JsonParseException { // استخراج عنصر "المحتوى". محتوى JsonElement = je.getAsJsonObject().get("content"); // إلغاء تسلسل المحتوى باستخدام مثيل Gson جديد إرجاع Gson().fromJson الجديد (content, Content.class); }
class ContentDeserializer implements JsonDeserializer {
    @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, ContentDeserializer الجديد()) .create();
Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();
يمكن الآن استخدام مثيل Gson هذا لإلغاء تسلسل استجابات JSON مباشرة إلى كائن "المحتوى" المضمن.

التكامل التحديثي:

أخيرًا، استخدم محول Gson المخصص عند إنشاء مثيل التحديثي:

التحديث التحديثي = التحديث التحديثي الجديد.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create(gson)) .build();
Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();
الآن، عندما يقوم التعديل التحديثي بإلغاء تسلسل استجابات واجهة برمجة التطبيقات، فإنه سيستخدم المحول المخصص لاستخراج حقل "المحتوى" فقط وإرجاع نوع POJO المناسب.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3