Kotlin Academy · درس

الفئات القابلة للتسلسل

أضيفوا Annotations إلى النماذج

الدرس 2 من 413 خطوة

الفئات القابلة للتسلسل درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

التعليق التوضيحي @Serializable

لجعل فئة قابلة للتسلسل، أضيفوا إليها التعليق التوضيحي @Serializable. ثم تنشئ إضافة المترجم مُسلسِلًا لها.

import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String)

يعمل مع فئات البيانات

يمكنكم إضافة التعليق التوضيحي إلى أي فئة، لكن فئات البيانات هي الخيار الأكثر شيوعًا للنماذج لأنها تنشئ تلقائيًا equals وhashCode وtoString.

وتتحول جميع خصائص المُنشئ إلى حقول قابلة للتسلسل.

القيم الافتراضية

تصبح الخصائص التي لها قيم افتراضية اختيارية أثناء فك الترميز. فإذا حذفها JSON، تُستخدم القيمة الافتراضية.

@Serializable
data class Config(
    val host: String,
    val port: Int = 8080,
    val secure: Boolean = false
)

الخصائص القابلة للقيمة الفارغة

تُطابق الأنواع القابلة للقيمة الفارغة القيمة null في JSON. وتظل الخاصية القابلة للقيمة الفارغة، إذا لم تكن لها قيمة افتراضية، مطلوبة في JSON، لكن يمكن أن تكون قيمتها null.

@Serializable
data class Profile(
    val name: String,
    val bio: String? = null
)

إعادة تسمية الحقول باستخدام @SerialName

غالبًا ما تختلف أسماء حقول JSON عن اصطلاحات التسمية في Kotlin. استخدموا @SerialName لربطها.

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Account(
    @SerialName("user_id") val userId: Int,
    @SerialName("full_name") val fullName: String
)

تجاهل الخصائص باستخدام @Transient

ضعوا علامة @Transient على الخاصية لاستبعادها من التسلسل. ويجب أن تكون للخصائص المؤقتة قيمة افتراضية.

import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable

@Serializable
data class Session(
    val token: String,
    @Transient val cachedAt: Long = 0L
)

الفئات المتداخلة القابلة للتسلسل

يمكن للفئات القابلة للتسلسل أن تحتوي على فئات أخرى قابلة للتسلسل. وتتعامل الإضافة تلقائيًا مع الرسم البياني كاملًا.

@Serializable
data class Address(val city: String, val zip: String)

@Serializable
data class Company(val name: String, val address: Address)

المجموعات في النماذج

تكون المجموعات القياسية مثل List وSet وMap قابلة للتسلسل مباشرةً عندما تكون عناصرها قابلة للتسلسل.

@Serializable
data class Team(
    val name: String,
    val members: List<String>,
    val scores: Map<String, Int>
)

دعم التعدادات

يمكن إضافة التعليق التوضيحي @Serializable إلى فئات التعداد، وتُسلسَل افتراضيًا باستخدام أسمائها. استخدموا @SerialName مع العناصر لتخصيص أسمائها.

@Serializable
enum class Role {
    @SerialName("admin") ADMIN,
    @SerialName("user") USER
}

ملخص المطلوب والاختياري

تكون الخاصية مطلوبة في JSON ما لم تكن لها قيمة افتراضية. القواعد الأساسية:

  • من دون قيمة افتراضية → مطلوبة
  • مع قيمة افتراضية → اختيارية
  • @Transient → متجاهَلة، ويجب أن تكون لها قيمة افتراضية
  • قابلة للقيمة الفارغة من دون قيمة افتراضية → مطلوبة، لكن يمكن أن تكون null

ما لا يمكن تسلسله مباشرةً

تحتاج الأنواع التي لا تملك مُسلسِلًا مدمجًا، مثل java.util.Date وjava.time.Instant وUUID، إلى مُسلسِل مخصّص ستتعلّمون استخدامه لاحقًا.

تؤدي محاولة تسلسلها من دونه إلى خطأ في الترجمة.

تحقّق سريع

أي عبارة عن @Transient صحيحة؟

مراجعة

تعلّمتم إضافة التعليقات التوضيحية إلى النماذج:

  • @Serializable على الفئة
  • القيم الافتراضية تجعل الحقول اختيارية
  • @SerialName يعيد تسمية مفاتيح JSON
  • @Transient يستبعد حقلًا، ويتطلب قيمة افتراضية

التالي: ترميز JSON وفك ترميزه فعليًا.

البدء مجانًا

تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «الفئات القابلة للتسلسل» مجاني؟

نعم — نص درس «الفئات القابلة للتسلسل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «الفئات القابلة للتسلسل»؟

أضيفوا Annotations إلى النماذج تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الفئات القابلة للتسلسل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد kotlinx.serialization
  2. الفئات القابلة للتسلسل
  3. ترميز JSON وفك ترميزه
  4. Serializers مخصصة
← العودة إلى Kotlin Academy