استخراج JSON المتداخل باستخدام محول Gson مخصص في التعديل التحديثي
توفر العديد من واجهات برمجة التطبيقات استجابات ببنية JSON شائعة حيث يشتمل الكائن الجذر على كائن متداخل حقل "المحتوى" الذي يحتوي على البيانات المطلوبة. ومع ذلك، فإن معظم POJOs تصمم فقط البيانات الموجودة في حقل "المحتوى"، مما يترك محول النوع التحديثي غير قادر على استخراج الكائن المناسب وإعادته.
لمعالجة هذا، يمكن تطوير أداة إلغاء تسلسل Gson مخصصة لاستخراج " content" وإرجاع الكائن المضمن. وإليك الطريقة:
أداة إلغاء التسلسل المخصصة:
قم بإنشاء فئة تطبق واجهة JsonDeserializer لنوع POJO المطلوب. على سبيل المثال، بالنسبة لـ "المحتوى" POJO:class ContentDeserializer تطبق JsonDeserializerclass 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