البرمجة

تنفيذ مسلسل مخصص لـ LocalDate مع Gson

عند استخدام Java 8 وأحدث إصدار (الإصدار “الثابت”) من Gson عبر Maven، قد تجد أنه عند تسلسل LocalDate، يتم الحصول على تنسيق يشبه الآتي:

json
"birthday": { "year": 1997, "month": 11, "day": 25 }

ومن الواضح أنك تفضل التنسيق الأكثر اختصارًا المماثل لـ “1997-11-25”. هل Gson يدعم هذا التنسيق المختصر تلقائيًا، أم يتطلب مني تنفيذ مسلسل مخصص لـ LocalDate؟ هذا هو السؤال الذي تطرحه.

تجدر الإشارة إلى أن التعديل على تنسيق التسلسل في Gson يتطلب بعض العمل، حيث يتعين تطبيق مسلسل مخصص (custom serializer) للفئة LocalDate لتنفيذ التنسيق المطلوب. في حالة Gson، لا يتم توفير تنسيق مباشر لتواريخ Java 8 بشكل افتراضي.

لتنفيذ هذا المطلوب، يمكنك إنشاء مسلسل مخصص لـ LocalDate. يقوم هذا المسلسل بتحويل LocalDate إلى التنسيق المطلوب “yyyy-MM-dd” عند التسلسل، وذلك بواسطة الطرق المناسبة في واجهة JsonSerializer المقدمة من Gson.

للبدء، يمكنك إنشاء مسلسل مخصص بإعادة تنفيذ واجهة JsonSerializer لـ LocalDate كما يلي:

java
import com.google.gson.*; import java.lang.reflect.Type; import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class LocalDateSerializer implements JsonSerializer { private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @Override public JsonElement serialize(LocalDate localDate, Type type, JsonSerializationContext jsonSerializationContext) { return new JsonPrimitive(formatter.format(localDate)); } }

ثم، يمكنك استخدام هذا المسلسل المخصص في كائن Gson الخاص بك كما يلي:

java
Gson gson = new GsonBuilder() .registerTypeAdapter(LocalDate.class, new LocalDateSerializer()) .create();

بهذا، سيتم الآن تسلسل LocalDate بتنسيق “yyyy-MM-dd” كما تريد.

المزيد من المعلومات

بالطبع، إليك المزيد من المعلومات حول كيفية تنفيذ مسلسل مخصص لـ LocalDate مع Gson:

  1. فهم واجهة JsonSerializer:

    • تُستخدم واجهة JsonSerializer في Gson لتخصيص عملية التسلسل لأنواع البيانات المخصصة.
    • تحتوي الواجهة على طريقة واحدة فقط serialize() التي يتم استدعاؤها أثناء عملية التسلسل.
  2. تنسيق التاريخ بواسطة DateTimeFormatter:

    • في المثال السابق، قمنا باستخدام DateTimeFormatter لتنسيق LocalDate بتنسيق “yyyy-MM-dd”.
    • يمكنك تغيير النمط المستخدم في DateTimeFormatter وفقًا للاحتياجات الخاصة بك.
  3. تسجيل المسلسل المخصص مع Gson:

    • يتم تسجيل المسلسل المخصص مع كائن Gson باستخدام registerTypeAdapter() في GsonBuilder.
    • تمرر الفئة التي ترغب في تخصيص تسلسلها، بالإضافة إلى المسلسل المخصص نفسه.
  4. استخدام Gson مع المسلسل المخصص:

    • بمجرد تسجيل المسلسل المخصص مع Gson، يمكنك استخدام كائن Gson بشكل طبيعي لتسلسل وفك تسلسل الكائنات.
    • Gson سيستخدم المسلسل المخصص تلقائيًا عندما يصادف تسلسل أو فك تسلسل LocalDate.
  5. استكشاف المزيد من خيارات التخصيص:

    • يمكنك استكشاف المزيد من خيارات التخصيص مع Gson، مثل تنفيذ مسلسلات مخصصة لأنواع بيانات أخرى، أو استخدام معالجات خاصة للتعامل مع حالات خاصة.
    • يوفر Gson مجموعة واسعة من الخيارات لتنفيذ التخصيصات وفقًا لاحتياجات التطبيق.

من خلال فهم هذه المعلومات، يمكنك الآن تنفيذ مسلسل مخصص لتنسيق LocalDate بالطريقة التي تريدها باستخدام Gson بكل سهولة ومرونة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر