مقدمة: لماذا JSON "القذر" هو عدو أي مطور
\n\nتخيل: أنت تكتب API بلغة PHP، وتعيد البيانات بتنسيق JSON، وتفتح النتيجة في المتصفح أو وحدة التحكم - وترى سطرًا واحدًا متصلاً بدون أي مسافة:
\n\n{"users":[{"id":1,"name":"إيفان","email":"ivan@example.com"},{"id":2,"name":"ماريا","email":"maria@example.com"}]}\n\nالعيون تتشتت، من المستحيل العثور على الحقل المطلوب، وإذا كان JSON يحتوي على خطأ - فستبحث عنه لساعات. هل هذا الموقف مألوف؟ لهذا السبب حصد سؤال "طباعة JSON بشكل جميل مع PHP" على Stack Overflow آلاف المشاهدات. اليوم سنتعرف مرة وإلى الأبد على كيفية جعل JSON قابلاً للقراءة ومنظمًا وجميلاً باستخدام PHP.
\n\nفي هذه المقالة ستتعلم:
\n- \n
- ما هي الطباعة الجميلة ولماذا هي ضرورية \n
- كيفية استخدام الدالة المدمجة
json_encodeمع العلامات \n - كيفية تنسيق JSON لتصحيح الأخطاء والسجلات والعرض في المتصفح \n
- تقنيات إضافية: التنسيق التكراري، العمل مع Unicode والضغط \n
هيا بنا!
\n\nما هي طباعة JSON بشكل جميل؟
\n\nالطباعة الجميلة (من الإنجليزية "pretty-printing") هي تنسيق البيانات باستخدام المسافات البادئة وفواصل الأسطر والمحاذاة، بحيث يتمكن الشخص من قراءة البنية بسهولة. في حالة JSON، يحول هذا "الفوضى" إلى تسلسل هرمي أنيق:
\n\n{\n "users": [\n {\n "id": 1,\n "name": "إيفان",\n "email": "ivan@example.com"\n },\n {\n "id": 2,\n "name": "ماريا",\n "email": "maria@example.com"\n }\n ]\n}\n\nأوافق، العمل بهذا الشكل أكثر متعة! توفر PHP لهذا الغرض أدوات مدمجة لا تتطلب تثبيت مكتبات إضافية.
\n\nالطريقة الأساسية: json_encode مع العلامة JSON_PRETTY_PRINT
\n\nالطريقة الأبسط والأكثر شيوعًا هي استخدام المعامل الثاني للدالة json_encode()، مع تمرير الثابت JSON_PRETTY_PRINT. إليك مثال أساسي:
<?php\n$data = [\n 'name' => 'PythonLib',\n 'type' => 'educational',\n 'topics' => ['PHP', 'Python', 'JavaScript'],\n 'stats' => [\n 'visitors' => 15000,\n 'rating' => 4.8\n ]\n];\n\n$prettyJson = json_encode($data, JSON_PRETTY_PRINT);\necho $prettyJson;\n?>\n\nالنتيجة:
\n\n{\n "name": "PythonLib",\n "type": "educational",\n "topics": [\n "PHP",\n "Python",\n "JavaScript"\n ],\n "stats": {\n "visitors": 15000,\n "rating": 4.8\n }\n}\n\nلاحظ: يتم ترتيب المفاتيح أبجديًا. إذا كنت بحاجة إلى الحفاظ على الترتيب الأصلي - استخدم العلامة JSON_PRESERVE_ZERO_FRACTION (للأعداد العشرية) أو قم بترتيب المصفوفة يدويًا.
دمج العلامات
\n\nيمكنك تمرير عدة علامات باستخدام | (أحادي المعامل OR). على سبيل المثال، للتنسيق وهروب رموز Unicode في نفس الوقت:
$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);\necho $json;\n\nالعلامة JSON_UNESCAPED_UNICODE تحافظ على الأحرف السيريلية والأحرف الأخرى بشكل قابل للقراءة، بدلاً من عرضها كـ \\u0438\\u0432\\u0430\\u043d. هذا مفيد بشكل خاص للمواقع الناطقة بالروسية.
كيفية عرض JSON المطبوع بشكل جميل في المتصفح
\n\nإذا كنت تطور API وتريد أن يظهر JSON بشكل جميل مباشرة في المتصفح (على سبيل المثال، أثناء تصحيح الأخطاء)، استخدم الرأس Content-Type: application/json مع التنسيق:
<?php\nheader('Content-Type: application/json; charset=utf-8');\n\n$response = [\n 'status' => 'success',\n 'data' => [\n 'message' => 'مرحبًا بالعالم!',\n 'code' => 200\n ]\n];\n\necho