مقدمة في العمل مع JSON في PHP
\n\nJSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطوير الويب لنقل المعلومات بين العميل والخادم. على الرغم من أصله من JavaScript، أصبح JSON معيارًا عالميًا تدعمه جميع لغات البرمجة تقريبًا، بما في ذلك PHP.
\n\nفي PHP، تم تنفيذ العمل مع JSON بشكل أصلي، مما يجعل معالجة هذا التنسيق بسيطة وفعالة. في هذه المقالة، سنشرح بالتفصيل كيفية إجراء تحليل JSON (تحويل السلسلة إلى هياكل بيانات PHP) والتسلسل (تحويل بيانات PHP إلى سلسلة JSON). المحتوى موجه للمطورين المبتدئين، لذلك سننتقل من البسيط إلى المعقد.
\n\nبنهاية المقالة، ستتعلم:
\n- \n
- تحويل مصفوفات وكائنات PHP إلى JSON \n
- تحليل سلاسل JSON إلى مصفوفات ترابطية وكائنات \n
- معالجة الأخطاء عند العمل مع JSON \n
- استخدام هياكل البيانات المتداخلة \n
الدوال الأساسية للعمل مع JSON في PHP
\n\nيوفر PHP دالتين رئيسيتين للعمل مع JSON:
\n\njson_encode() — تسلسل البيانات
\n\nتقوم الدالة json_encode() بتحويل متغير PHP (مصفوفة، كائن، سلسلة، رقم) إلى سلسلة JSON. يُسمى هذا التسلسل.
مثال على الاستخدام الأساسي:
\n\n<?php\n// مصفوفة ترابطية\n$user = [\n "name" => "إيفان",\n "age" => 28,\n "email" => "ivan@example.com",\n "is_active" => true\n];\n\n$json = json_encode($user);\necho $json;\n// الإخراج: {"name":"إيفان","age":28,"email":"ivan@example.com","is_active":true}\n?>\n\nتقوم الدالة تلقائيًا بتحويل أنواع بيانات PHP إلى أنواع JSON المقابلة:
\n- \n
- السلاسل → سلاسل JSON \n
- الأرقام → أرقام JSON \n
- القيم المنطقية → true/false \n
- المصفوفات → كائنات أو مصفوفات JSON (حسب المفاتيح) \n
- NULL → null \n
json_decode() — تحليل JSON
\n\nتقوم الدالة json_decode() بالعملية العكسية — تحويل سلسلة JSON إلى متغير PHP. يُسمى هذا التحليل.
مثال:
\n\n<?php\n$jsonString = '{"name":"إيفان","age":28,"email":"ivan@example.com","is_active":true}';\n\n// تحليل إلى كائن (افتراضيًا)\n$userObject = json_decode($jsonString);\necho $userObject->name; // الإخراج: إيفان\n\n// تحليل إلى مصفوفة ترابطية (المعامل الثاني true)\n$userArray = json_decode($jsonString, true);\necho $userArray["name"]; // الإخراج: إيفان\n?>\n\nلاحظ المعامل الثاني للدالة json_decode():
- \n
false(افتراضيًا) — يُرجع كائنات stdClass \n true— يُرجع مصفوفات ترابطية \n
الإمكانيات المتقدمة ومعالجة الأخطاء
\n\nالعمل مع الهياكل المتداخلة
\n\nيدعم JSON الكائنات والمصفوفات المتداخلة. يتعامل PHP بسهولة مع هذه الهياكل:
\n\n<?php\n// هيكل بيانات معقد\n$data = [\n "company" => "TechCorp",\n "employees" => [\n ["name" => "آنا", "position" => "مطور"],\n ["name" => "بيتر", "position" => "مصمم"],\n ["name" => "ماريا", "position" => "مدير"]\n ],\n "address" => [\n "city" => "موسكو",\n "street" => "تفيرسكايا",\n "building" => 10\n ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>\n\nستكون النتيجة منسقة لسهولة القراءة بفضل العلم JSON_PRETTY_PRINT.
معالجة الأخطاء أثناء التحليل
\n\nعند العمل مع بيانات خارجية (API، ملفات)، من المهم التحقق من صحة JSON. استخدم الدالة json_last_error():
<?php\n$badJson = '{"name":