العمل مع JSON في Swift: التحليل والتسلسل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع JSON على Swift

JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطوير تطبيقات الويب والجوال. بالنسبة لمطوري Swift المبتدئين (iOS/macOS)، فإن القدرة على العمل مع JSON هي مهارة أساسية. في هذه المقالة، سنستعرض طريقتين رئيسيتين: الطريقة التقليدية JSONSerialization والبروتوكول الحديث Codable. ستتعلم كيفية الحصول على البيانات من الشبكة، وتحليلها، وتحويلها مرة أخرى إلى JSON لإرسالها إلى الخادم.

سواء كنت تبني تطبيقًا للطقس، أو قائمة مهام، أو شبكة اجتماعية، سيكون JSON رفيقك الدائم. لنبدأ بمثال بسيط ثم ننتقل تدريجيًا إلى سيناريوهات أكثر تعقيدًا.



أساسيات JSON في Swift: الهيكل وأنواع البيانات

قبل كتابة الكود، من المهم فهم شكل JSON. في Swift، يتم تمثيل JSON على شكل قواميس ([String: Any]) ومصفوفات ([Any]). أنواع البيانات الأساسية في JSON:

  • سلاسل نصية — محاطة بعلامات اقتباس مزدوجة ("مرحبًا")
  • أرقام — صحيحة وعائمة (42, 3.14)
  • قيم منطقية — true أو false
  • مصفوفات — قوائم مرتبة من القيم ([1, 2, 3])
  • كائنات — مجموعات غير مرتبة من أزواج "مفتاح-قيمة" ({"key": "value"})
  • null — قيمة فارغة

في Swift، من المناسب استخدام هياكل البيانات المضمنة لتمثيل JSON. لنلقِ نظرة على مثال لكائن JSON بسيط:

{  "name": "إيفان",  "age": 25,  "isStudent": false,  "hobbies": ["قراءة", "برمجة"]}

الآن دعنا نرى كيفية العمل مع هذا التنسيق في كود Swift.



تحليل JSON باستخدام JSONSerialization (الطريقة التقليدية)

قبل ظهور البروتوكول Codable، كان المطورون يستخدمون الفئة JSONSerialization. هذه الطريقة لا تزال ذات صلة، خاصة عندما يكون هيكل JSON غير معروف مسبقًا أو ديناميكيًا جدًا.

مثال أساسي للتحليل

لنفترض أن لدينا سلسلة JSON نحتاج إلى تحويلها إلى كائنات Swift:

let jsonString = """{  "name": "ماريا",  "age": 30,  "isEmployed": true}"""

if let jsonData = jsonString.data(using: .utf8) { do { if let dictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] { let name = dictionary["name"] as? String ?? "غير معروف" let age = dictionary["age"] as? Int ?? 0 let isEmployed = dictionary["isEmployed"] as? Bool ?? false print("الاسم: \\(name), العمر: \\(age), موظف: \\(isEmployed)") } } catch { print("خطأ في تحليل JSON: \\(error.localizedDescription)") }}

لاحظ: بعد الحصول على القاموس، نقوم بتحويل كل عنصر إلى النوع المطلوب بشكل صريح. قد يكون هذا غير مريح عند وجود عدد كبير من الحقول.



العمل مع المصفوفات في JSON

غالبًا ما يحتوي JSON على مصفوفات من الكائنات. لنحلل مثالًا بمصفوفة من المستخدمين:

let jsonArrayString = """[  {"name": "آنا", "age": 22},  {"name": "بيتر", "age": 28}]"""

if let data = jsonArrayString.data(using: .utf8) { do { if let users = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] { for user in users { let name = user["name"] as? String ?? "" let age = user["age"] as? Int ?? 0 print("\\(name): \\(age) سنة") } } } catch { print("خطأ: \\(error)") }}

طريقة JSONSerialization بسيطة، لكنها تتطلب الكثير من التحويل اليدوي للأنواع. بالنسبة للمشاريع الحديثة، توصي Apple باستخدام Codable.



المدونات

توصيات الكتب