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

مولّد هياكل Swift من JSON

الصق JSON واحصل فورًا على هياكل Swift Codable جاهزة لـ iOS وmacOS وSwiftUI.

Swift Codable ونمط CodingKeys

بروتوكول Codable في Swift (اسم مستعار لـ Encodable & Decodable) هو الطريقة القياسية لتحليل JSON. يولّد المحوّل أنواع struct أو class متوافقة مع Codable مع تعداد CodingKeys عندما تختلف أسماء الخصائص عن مفاتيح JSON. يستخدم اصطلاح التسمية في Swift حروفًا صغيرة lowerCamelCase للخصائص لذا يُعيَّن "first_name" في JSON إلى firstName في Swift مع case من CodingKeys يربط الاثنين.

يتبع تعيين الأنواع اصطلاحات Swift: سلاسل JSON تصبح String والأعداد الصحيحة Int والكسور العشرية Double والقيم المنطقية Bool والمصفوفات [T]. الكائنات المتداخلة تولّد أنواع هياكل مسمّاة خاصة بها. قيم JSON null والحقول الغائبة تُعيَّن إلى Optional (T?) مع قيمة افتراضية nil في المُهيّئ.

يمكن للمولّد إنتاج تصريحات struct (نوع قيمة، الافتراضي) أو class (نوع مرجعي). تُفضَّل الهياكل في Swift لنماذج البيانات لامتلاكها دلالة قيمة وكونها آمنة من الخيوط تلقائيًا وتجنبها دورات الاحتفاظ.

CodingKeys ومفككات الترميز المخصصة ومعالجة التواريخ

عندما يختلف أي اسم خاصية في هيكل Swift عن مفتاح JSON الخاص به يُولَّد تعداد CodingKeys يسرد التعيين لكل خاصية. هذا هو نهج Swift القياسي المتوافق مع JSONDecoder.

بديل آخر هو تعيين keyDecodingStrategy على JSONDecoder إلى .convertFromSnakeCase مما يُلغي الحاجة إلى CodingKeys عندما تكون الاختلافات الوحيدة هي snake_case مقابل camelCase. يمكن للمولّد إنتاج تعليق يُنبّه إلى هذا الخيار عند انطباقه.

سلاسل تاريخ JSON تحدٍّ شائع. يُكتب المولّد حقول التاريخ كـ String افتراضيًا لكن مفتاح تبديل يحوّلها إلى Date وينتج ملاحظة لتعيين dateDecodingStrategy على JSONDecoder.

سير عمل تطوير iOS وSwiftUI

يحلّل مطوّرو iOS الذين يستخدمون URLSession أو Alamofire استجابات API مع JSONDecoder().decode(MyModel.self, from: data). يولّد المحوّل نوع MyModel الذي تحتاجه مع جميع الأنواع المتداخلة المُعرَّفة في نفس الملف.

تستخدم SwiftUI خصائص @Published وأصناف ObservableObject لتوجيه واجهة المستخدم من نماذج البيانات. يمكن للمولّد اختياريًا تغليف الهيكل الجذري في صنف ObservableObject مع خصائص @Published.

يعتمد كود الشبكة مع Combine وasync/await في تطبيقات iOS الحديثة على كائنات نموذج مكتوبة بالأنواع بشكل جيد. توافق Codable المولّد هنا يتكامل مباشرةً مع URLSession.shared.data(from:) وJSONDecoder.

FAQ

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

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

هل يجب أن أستخدم struct أم class في المخرجات؟

استخدم struct (الافتراضي) لنماذج البيانات الصافية — هذا هو Swift الاصطلاحي. استخدم class عندما تحتاج الوراثة أو التشغيل البيني مع @objc أو دلالة المرجع.

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

الكلمات المحجوزة في Swift مثل "class" و"struct" و"enum" و"func" و"let" تُهرَّب بعلامات الاقتباس الخلفية (مثلًا `class`) كأسماء خصائص وإدخال CodingKeys يعيّنها إلى مفتاح JSON الأصلي.

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

نعم. كل كائن JSON متداخل يصبح نوع Swift مسمّى خاصًا به. جميع الأنواع تُنتَج في ملف واحد بترتيب التبعيات.

هل يمكنني توليد نماذج متوافقة مع SwiftyJSON؟

يستهدف المولّد مخرجات Codable الأصلية في Swift وهو المعيار الحديث. SwiftyJSON نهج قديم؛ هياكل Codable أكثر أداءً وأمانًا من حيث الأنواع ولا تتطلب تبعية SwiftyJSON.

أدوات ذات صلة