→ جميع الأدوات Code Gen

مولّد Data Classes في Kotlin من JSON

الصق JSON واحصل على data classes Kotlin اصطلاحية جاهزة لـ Android وKotlin من جانب الخادم.

Data Classes في Kotlin ومكتبات التسلسل

تُعدّ data classes في Kotlin الطريقة الاصطلاحية لنمذجة JSON: تولّد تلقائيًا equals() وhashCode() وtoString() وcopy(). يولّد المحوّل تصريحات data class مع مُنشئ أساسي يسرد كل خاصية. تُستخدم خصائص val افتراضيًا لعدم قابلية التغيير ومفتاح تبديل يتحول إلى var للنماذج القابلة للتغيير.

Kotlinx.serialization هي المكتبة التي تُعدّ Kotlin أولًا والتي تُديرها JetBrains وتُستخدم على نطاق واسع في مشاريع Kotlin Multiplatform وKtor. يضيف المولّد التعليق @Serializable لكل صنف و@SerialName("key") للخصائص التي تختلف أسماؤها عن مفتاح JSON. يضيف وضع Gson التعليق @SerializedName("key") لمشاريع Android التي لا تزال تستخدم Gson مع Retrofit.

يولّد وضع Moshi تعليقات @JsonClass(generateAdapter = true) و@Json(name = "key") لتجاوزات أسماء الخصائص. يُعدّ Moshi شائعًا في تطوير Android لمحوّل codegen الخاص به الذي يتجنّب الاستبطان في وقت التشغيل.

تعيين الأنواع والخصائص القابلة للقيمة الفارغة

سلاسل JSON تصبح String والأعداد الصحيحة Int (أو Long للقيم الكبيرة) والكسور العشرية Double والقيم المنطقية Boolean والمصفوفات List<T>. الكائنات المتداخلة تولّد data classes منفصلة. الخصائص التي تكون null في بعض كائنات JSON أو غائبة في بعض عناصر المصفوفة تُكتب T? (قابلة للقيمة الفارغة) مع قيمة افتراضية null في المُنشئ.

يميّز نظام أنواع Kotlin بين الأنواع غير القابلة للقيمة الفارغة (T) والقابلة لها (T?) على مستوى اللغة مما يُعيَّن بشكل طبيعي إلى تمييز الحضور/الغياب في JSON. يُعلّم المولّد بشكل صحيح الحقل كقابل للقيمة الفارغة عندما يظهر null في JSON النموذجي أو عندما يغيب في بعض كائنات المصفوفة.

بالنسبة لـ kotlinx.serialization تُتخطّى الخصائص ذات القيم الافتراضية تلقائيًا أثناء التسلسل عندما تساوي الافتراضي. هذا يعني أن الخصائص القابلة للقيمة الفارغة من نوع T? = null تُحذف من المخرجات المُسلسَلة عند كونها null.

سير عمل Android وKotlin Multiplatform

يُعرّف مطوّرو Android الذين يستخدمون Retrofit عادةً طرق واجهة يكون نوع إرجاعها data class في Kotlin. الصق استجابة API وولّد data class بتعليقات Gson أو Moshi واستخدمها كنوع استدعاء Retrofit.

تتشارك مشاريع Kotlin Multiplatform Mobile نماذج البيانات بين Android وiOS. تُعدّ kotlinx.serialization المكتبة الموصى بها لـ KMM لدعمها متعدد المنصات. تعمل data classes المُولَّدة بتعليق @Serializable على جميع أهداف KMM بدون تعديل.

تستخدم مشاريع خادم Ktor kotlinx.serialization بشكل أصلي. يولّد المحوّل data classes يمكنك استخدامها مباشرةً كأنواع معاملات معالجات مسارات Ktor وأجسام الاستجابات.

FAQ

هل تُرسَل بياناتي إلى خادم؟

لا. تتم جميع المعالجة بالكامل داخل متصفحك. لا يغادر JSON جهازك أبدًا.

أي مكتبة تسلسل يجب أن أختار؟

استخدم kotlinx.serialization لـ Kotlin Multiplatform وKtor. استخدم Gson لمشاريع Android القديمة. استخدم Moshi لمشاريع Android التي تريد محوّلات codegen بدون استبطان.

كيف تُعالَج الكلمات المحجوزة في Kotlin كأسماء خصائص؟

الكلمات المحجوزة في Kotlin مثل "class" و"object" و"fun" و"when" تُهرَّب بعلامات الاقتباس الخلفية (مثلًا `class`) و@SerialName / @Json يحافظ على مفتاح JSON الأصلي.

هل يمكنني توليد sealed classes لاتحادات مُميَّزة؟

يولّد المحوّل الأساسي data classes. توليد sealed classes لأنماط الاتحاد المُميَّز ليس تلقائيًا لكن مخرجات data class تُقدّم نقطة بداية متينة.

هل الهياكل المتداخلة بعمق مدعومة؟

نعم. كل كائن JSON متداخل يصبح data class خاصة به. جميع الأصناف المولّدة تُنتَج في ملف واحد بترتيب التبعيات.

أدوات ذات صلة