json_serializable عمليًا
توليد تسلسل النماذج تلقائيًا
json_serializable عمليًا درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
مشكلة الشيفرة المكررة في JSON
تُعد كتابة fromJson وtoJson يدويًا مهمة مملة وعرضة للأخطاء. تنشئ حزمة json_serializable كليهما نيابةً عنكم انطلاقًا من نموذج. 📦
إضافة الحزم
تحتاجون إلى json_annotation باعتبارها اعتمادية عادية، وإلى json_serializable وbuild_runner باعتبارهما اعتماديتي تطوير للتوليد.
dependencies:
json_annotation: ^4.9.0إضافة تعليق توضيحي إلى الفئة
ضعوا الوسم @JsonSerializable على النموذج. تخبر هذه التعليقة التوضيحية المولِّد بإنتاج شيفرة التسلسل لهذه الفئة.
@JsonSerializable()
class User {
final String name;
User(this.name);
}التصريح عن ملف part
أضيفوا توجيه part حتى يتمكن ملفكم من تضمين المساعدات المُولَّدة. يحاكي اسمه اسم ملفكم مع إضافة اللاحقة .g.dart.
part 'user.g.dart';توصيل fromJson
أضيفوا factory يستدعي الدالة المُولَّدة. ينشئ builder المساعد _$UserFromJson نيابةً عنكم.
factory User.fromJson(Map<String, dynamic> j) =>
_$UserFromJson(j);توصيل toJson
أضيفوا أسلوبًا يستدعي الكاتب المُولَّد. يحوّل المساعد _$UserToJson الكائن مجددًا إلى خريطة JSON.
Map<String, dynamic> toJson() => _$UserToJson(this);توليد الشيفرة
شغّلوا build_runner مرة واحدة، وسيظهر الملف user.g.dart وفيه دالتا المساعدة منفّذتان بالكامل وجاهزتان للاستخدام.
dart run build_runner buildإعادة تسمية مفتاح JSON
عندما يختلف اسم الحقل في API عن اسمه في Dart، استخدموا @JsonKey لربطهما. تبقى شيفرتكم واضحة، بينما يطابق JSON ما يتوقعه الخادم.
@JsonKey(name: 'full_name')
final String fullName;توفير قيمة افتراضية
يمكنكم توفير قيمة بديلة للحقول المفقودة. يملأ الخيار defaultValue قيمةً عندما يكون المفتاح غائبًا عن JSON.
@JsonKey(defaultValue: 0)
final int score;تعمل النماذج المتداخلة تلقائيًا
إذا كان الحقل فئة أخرى تحمل @JsonSerializable، فسيُجري المولِّد التسلسل عليها تكراريًا. ولا تحتاج الكائنات المتداخلة إلى جهد إضافي منكم.
استخدموه كما تستخدمون Dart العادية
بعد التوليد، تحلّلون البيانات وتشفّرونها باستدعاءات أساليب عادية. وتبقى helpers المُولَّدة مخفية، فتبدو مواضع الاستدعاء طبيعية.
final u = User.fromJson(data);
final back = u.toJson();تحقّق سريع
ما التعليقة التوضيحية التي تضع علامة على فئة لتوليد شيفرة JSON؟
مراجعة
ضعوا @JsonSerializable، وصِلوا fromJson وtoJson، ثم شغّلوا build_runner. استخدموا @JsonKey لربط أسماء الحقول والقيم الافتراضية. 🎉
تعلم Dart مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «json_serializable عمليًا» مجاني؟
نعم — نص درس «json_serializable عمليًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «json_serializable عمليًا»؟
توليد تسلسل النماذج تلقائيًا تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «json_serializable عمليًا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التعليقات التوضيحية المضمّنة: override وdeprecated
- كتابة التعليقات التوضيحية المخصصة
- توليد الشيفرة باستخدام build_runner
- json_serializable عمليًا