محول JSON إلى Dart
أنشئ فئات نماذج Dart بلا تبعيات من كائن JSON أو مصفوفة من عينات الكائنات. يدمج المحول جميع عناصر العينة، وينشئ فئات متداخلة، ويحافظ على مفاتيح JSON الأصلية، وينتج أنواع حقول سليمة وآمنة من null مع مُنشئ المصنع fromJson. أضف دوال toJson عندما تحتاج إلى مخرجات متوافقة مع jsonEncode. تظل العينة والكود الناتج داخل هذا المتصفح، ولا يُرفعان إلى الخادم ولا يُضافان إلى عنوان URL.
كيف تعمل
-
1
ألصق عينة ممثلة
استخدم كائن JSON واحدًا أو مصفوفة من الكائنات. تساعد العناصر المتعددة على اكتشاف الحقول المفقودة والقابلة للقيمة null والمختلطة الأنواع.
-
2
اختر خيارات Dart
سمِّ الفئة الرئيسية، وحدد ما إذا كانت جميع الحقول قابلة للقيمة null، وأضف دوال toJson عند الحاجة.
-
3
راجع وصدّر
تحقق من الفئات المستنتجة، ثم انسخ الكود أو نزّل ملف models.dart محليًا.
كيف يتحول JSON إلى نماذج Dart آمنة من null
توضح وثائق dart:convert الرسمية أن jsonDecode() ينتج قيمًا متوافقة مع JSON، مثل الأرقام والنصوص والقيم المنطقية وnull والقوائم والخرائط ذات المفاتيح النصية. لا يمكن ترميز فئة نموذج مباشرةً إلى JSON، لكن jsonEncode() يستطيع استدعاء دالة toJson() الخاصة بها. ينشئ هذا المحول نمط التسلسل اليدوي هذا من دون إضافة تعليقات json_serializable أو تبعيات حزم.
لنفترض أن العينة تحتوي على مستخدم له عنوان متداخل. سيحتوي User الناتج على حقول final ومُنشئ بمعاملات مسماة. تحوّل User.fromJson(Map<String, Object?> json) القيم البسيطة وتستدعي UserAddress.fromJson() للكائن المتداخل. إذا كان address مفقودًا أو كانت قيمته null في أي كائن من العينة، يصبح نوعه UserAddress? ويتحقق المصنع من null قبل إنشائه. عند تفعيل toJson، تتحول النماذج المتداخلة بشكل متكرر إلى خرائط يقبلها jsonEncode().
| ما تمت ملاحظته في JSON | نوع Dart الناتج |
|---|---|
| عدد صحيح | int |
| عدد عشري | double |
| عينات صحيحة وعشرية | num |
| نص | String |
| قيمة منطقية | bool |
| كائن متداخل | فئة نموذج منشأة |
| مصفوفة متجانسة | List<T> |
| مصفوفة متداخلة فارغة أو غير متوافقة | List<Object?> |
| قيم null فقط أو قيم متعارضة | Object? |
يفحص المحول كل كائن في المصفوفة الرئيسية بدل الاعتماد على العنصر الأول فقط. يصبح الحقل قابلًا للقيمة null إذا كان مفقودًا من أحد العناصر أو كانت قيمته null صراحةً. ويمكنك أيضًا جعل كل الحقول قابلة للقيمة null عندما تكون واجهة API الفعلية أقل قابلية للتوقع من العينة. يوضح دليل الأمان من null في Dart أن الأنواع غير قابلة للقيمة null افتراضيًا وتحتاج إلى ? لقبول null.
معالجة المعرّفات وحدود الاستنتاج
لا يلزم أن تكون مفاتيح JSON أسماء أعضاء صالحة في Dart. تُحذف علامات الترقيم، وتتحول الكلمات إلى lowerCamelCase، وتحصل الكلمات المحجوزة على لاحقة آمنة، وتحصل التصادمات على لواحق رقمية ثابتة. يظل المفتاح الأصلي بلا تغيير في json['original-key'] وفي خريطة toJson(). تستخدم أسماء الفئات المتداخلة المسار الكامل، حتى لا تُدمج كائنات عناوين غير مرتبطة في فئة واحدة من دون قصد.
لا تستطيع عينة واحدة إثبات عقد API كامل. لا تُفسر نصوص JSON تلقائيًا على أنها تواريخ أو UUID أو enums، ولا توفر المصفوفة الفارغة نوعًا لعناصرها. كذلك لا يمكن ضمان سلامة أسماء أعضاء الكائن المكررة عند التحويل ذهابًا وإيابًا، لأن محللات JSON تحتفظ عادةً بالقيمة الأخيرة. راجع النماذج الناتجة مقابل وثائق API أو مخططها قبل استخدامها في الإنتاج. تحد الأداة من حجم الإدخال وعمق التداخل وعدد التعريفات المستنتجة وحجم المخرجات لإبقاء عمل المتصفح ضمن حدود آمنة.
الأسئلة الشائعة
لا. تحدث عملية التحليل والاستنتاج وإنشاء الكود والنسخ والتنزيل في متصفحك. لا تُرسل بيانات JSON ولا كود Dart الناتج إلى خوادمنا ولا يوضعان في عنوان URL.
نعم. يستخدم Flutter لغة Dart، لذلك يمكن استعمال هذه الفئات الخالية من التبعيات في مشروع Flutter. راجع الأنواع المستنتجة مقابل عقد API الفعلي أولًا.
لا. تنشئ دوال fromJson وtoJson اختيارية يدويًا من دون الاعتماد على حزمة أو build_runner.
يصبح الحقل الذي تظهر قيمته null أو يكون مفقودًا قابلًا للقيمة null. ويمكنك اختيار جعل جميع الحقول الناتجة قابلة للقيمة null إذا لم تكن العينة ممثلة للبيانات الفعلية.
لا. تعكس النتيجة القيم التي شوهدت فقط. استخدم عدة عينات من الكائنات وقارن النتيجة بمخطط المزوّد أو وثائقه.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
مرجع اختصارات لوحة المفاتيح
ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.
مدقق البريد الإلكتروني
تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.
مولد EditorConfig
أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.
منسق HTML
نسّق HTML محلياً في المتصفح بمسافة بادئة من مسافتين أو أربع مسافات. لا يُرفع HTML ولا يُتحقق منه.
الأداة متاحة بلغات أخرى
- Trình chuyển JSON sang Dart [VI]
- JSON-in-Dart-Konverter [DE]
- Conversor de JSON para Dart [PT]
- JSON to Dart 변환기 [KO]
- ตัวแปลง JSON เป็น Dart [TH]
- JSON till Dart-konverterare [SV]
- JSON-naar-Dart-converter [NL]
- Convertisseur JSON vers Dart [FR]
- Konwerter JSON na Dart [PL]
- Konverter JSON ke Dart [ID]
- JSONからDartへの変換ツール [JA]
- Conversor de JSON a Dart [ES]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]