العمل مع JSON في PHP: التحليل والتسلسل عمليًا

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

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

ابدأ الدورة

العمل مع JSON في PHP: التحليل والتسلسل عمليًا

\n\n

JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات أصبح معيارًا لواجهات برمجة التطبيقات (API) وملفات التكوين. في PHP، تم تنفيذ العمل مع JSON بشكل أصلي ولا يتطلب تثبيت إضافات إضافية. في هذه المقالة، سنشرح كيفية إجراء التحليل والتسلسل لـ JSON في PHP بأمثلة واقعية، بالإضافة إلى تعلم معالجة الأخطاء والعمل مع الهياكل المتداخلة.

\n\n

ما هو التسلسل وتحليل JSON؟

\n\n

قبل الانتقال إلى الكود، دعنا نحدد المفاهيم الأساسية:

\n\n
    \n
  • التسلسل — تحويل متغير PHP (مصفوفة، كائن) إلى سلسلة JSON.
  • \n
  • التحليل (إلغاء التسلسل) — العملية العكسية: تحويل سلسلة JSON إلى متغير PHP.
  • \n
\n\n

يوفر PHP دالتين رئيسيتين لهذه المهام: json_encode() و json_decode(). دعنا ننظر إليهما بالتفصيل.

\n\n

تسلسل البيانات إلى JSON باستخدام json_encode()

\n\n

تأخذ الدالة json_encode() قيمة PHP (باستثناء الموارد) وتعيد تمثيلها بصيغة JSON. لنلق نظرة على مثال أساسي:

\n\n
<?php\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

بشكل افتراضي، تقوم json_encode() بتحويل المصفوفات الترابطية إلى كائنات JSON. إذا كنت بحاجة إلى مصفوفة، استخدم العلم JSON_FORCE_OBJECT:

\n\n
<?php\n$numbers = [10, 20, 30];\necho json_encode($numbers); // [10,20,30]\necho json_encode($numbers, JSON_FORCE_OBJECT); // {"0":10,"1":20,"2":30}\n?>
\n\n

أعلام مفيدة لـ json_encode()

\n\n
    \n
  • JSON_PRETTY_PRINT — ينسق الإخراج بمسافات بادئة لسهولة القراءة.
  • \n
  • JSON_UNESCAPED_UNICODE — لا يهرب أحرف Unicode (الحروف العربية).
  • \n
  • JSON_NUMERIC_CHECK — يحول السلاسل التي تحتوي على أرقام إلى نوع رقمي.
  • \n
\n\n
<?php\n$data = ['product' => 'كتاب', 'price' => '1500'];\n\n// إخراج جميل مع أحرف عربية\necho json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);\n/*\n{\n    "product": "كتاب",\n    "price": "1500"\n}\n*/\n\n// تحويل تلقائي للسلسلة '1500' إلى رقم\necho json_encode($data, JSON_NUMERIC_CHECK);\n// {"product":"كتاب","price":1500}\n?>
\n\n

تحليل JSON في PHP باستخدام json_decode()

\n\n

تأخذ الدالة json_decode() سلسلة JSON وتحولها إلى متغير PHP. المعامل الثاني $associative يحدد ما إذا كان سيتم إرجاع مصفوفة ترابطية (true) أو كائن (false، الافتراضي).

\n\n
<?php\n$jsonString = '{"name":"ماريا","age":25,"hobbies":["قراءة","سفر"]}';\n\n// تحليل إلى كائن\n$obj = json_decode($jsonString);\necho $obj->name; // ماريا\necho $obj->hobbies[0]; // قراءة\n\n// تحليل إلى مصفوفة ترابطية\n$arr = json_decode($jsonString, true);\necho $arr['age']; // 25\n?>
\n\n

العمل مع الهياكل المتداخلة

\n\n

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

\n\n
<?php\n$weatherJson = '{\n    "city": "موسكو",\n    "temperature": {\n        "current": -5,\n        "feels_like": -8\n    },\n    "forecast": [\n        {"day": "الإثنين", "temp": -3},\n        {"day": "الثلاثاء", "temp": -1}\n    ]\n}';\n\n$weather = json_decode($weatherJson, true);\n\necho "درجة الحرارة الحالية: " . $weather['temperature']['current'] . "°C\\n";\necho "الإحساس بها: " . $weather['temperature']['feels_like'] . "°C\\n";\n\nforeach ($weather['forecast'] as $day) {\n    echo "{$day['day']}: {$day['temp']}°C\\n";\n}\n?>
\n\n

المدونات

توصيات الكتب