ترميز JSON وفك ترميزه
حوّلوا مصفوفات PHP إلى JSON وحلّلوا استجابات JSON باستخدام json_encode/json_decode
ترميز JSON وفك ترميزه درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
ما JSON؟
JSON (JavaScript Object Notation) هو تنسيق بيانات خفيف يُستخدم للتواصل عبر API وملفات الإعداد. تحتوي PHP على دوال مضمّنة لترميزه وفك ترميزه.
json_encode()
تحوّل قيمة PHP، مثل مصفوفة أو كائن أو قيمة مفردة، إلى سلسلة JSON.
<?php
$data = ["name" => "Alice", "age" => 30, "active" => true];
$json = json_encode($data);
echo $json; // {"name":"Alice","age":30,"active":true}json_decode()
تحلّل سلسلة JSON وتعيد قيمة PHP. وتعيد كائنات stdClass افتراضيًا؛ مرّر true كمعلمة ثانية للحصول على مصفوفات ترابطية.
<?php
$json = '{"name":"Alice","age":30}';
$obj = json_decode($json); // stdClass
$arr = json_decode($json, true); // associative array
echo $arr["name"]; // "Alice"تنسيق JSON بشكل مقروء
استخدم خيار JSON_PRETTY_PRINT لتنسيق المخرجات بطريقة تسهّل قراءتها.
<?php
$json = json_encode(["a" => 1, "b" => 2], JSON_PRETTY_PRINT);
echo $json;
// {
// "a": 1,
// "b": 2
// }خيارات json_encode المفيدة
الخيارات الشائعة: JSON_UNESCAPED_UNICODE (الإبقاء على UTF-8 كما هو)، وJSON_UNESCAPED_SLASHES (عدم وضع شرطة مائلة عكسية قبل /)، وJSON_THROW_ON_ERROR (إطلاق استثناء عند الفشل).
<?php
$json = json_encode(["url" => "https://example.com/path"],
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);معالجة الأخطاء
تحقّق من json_last_error() بعد الترميز أو فك الترميز، أو استخدم JSON_THROW_ON_ERROR للحصول على استثناء تلقائيًا.
<?php
try {
$data = json_decode($input, true, 512, JSON_THROW_ON_ERROR);
} catch (\JsonException $e) {
echo "Invalid JSON: ".$e->getMessage();
}ترميز الكائنات
تُرمَّز الكائنات على هيئة كائنات JSON. لا تُضمَّن الخصائص العامة إلا افتراضيًا. نفّذ JsonSerializable للتحكم في عملية التسلسل.
<?php
class Point implements \JsonSerializable {
public function __construct(
private float $x, private float $y
) {}
public function jsonSerialize(): mixed {
return ["x" => $this->x, "y" => $this->y];
}
}
echo json_encode(new Point(1.0, 2.5)); // {"x":1,"y":2.5}البنى المتداخلة
يدعم JSON التداخل. وتُرمَّز مصفوفات PHP المتداخلة بعمق إلى كائنات أو مصفوفات JSON متداخلة بسلاسة.
<?php
$order = [
"id" => 1,
"items" => [
["sku" => "A1", "qty" => 2],
["sku" => "B3", "qty" => 1],
],
];
echo json_encode($order, JSON_PRETTY_PRINT);عمق فك الترميز
تحدّد المعلمة الثالثة في json_decode الحد الأقصى لعمق الاستدعاء التكراري، وقيمته الافتراضية 512. وقد تحتاج ملفات JSON شديدة العمق إلى حد أعلى.
JSON_NUMERIC_CHECK
يحوّل خيار JSON_NUMERIC_CHECK السلاسل الرقمية إلى أرقام أثناء الترميز. استخدمه بحذر، فقد يؤدي إلى إفساد أرقام الهواتف.
المعالجة التدفقية لملفات JSON الكبيرة
بالنسبة إلى ملفات JSON الكبيرة جدًا، استخدم مكتبة لتحليل البيانات بتدفّق، مثل halaxa/json-machine، بدلًا من تحميل الملف كاملًا باستخدام json_decode.
الملخص
يحوّل json_encode قيم PHP إلى سلاسل JSON. ويحلّل json_decode بيانات JSON. استخدم JSON_THROW_ON_ERROR لمعالجة الأخطاء بأمان.
تحقّق سريع
كيف تحصل على مصفوفة ترابطية من json_decode؟
الأسئلة الشائعة
هل درس «ترميز JSON وفك ترميزه» مجاني؟
نعم — نص درس «ترميز JSON وفك ترميزه» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «ترميز JSON وفك ترميزه»؟
حوّلوا مصفوفات PHP إلى JSON وحلّلوا استجابات JSON باستخدام json_encode/json_decode تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «ترميز JSON وفك ترميزه»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ترميز JSON وفك ترميزه
- إجراء طلبات HTTP باستخدام cURL
- التعامل مع استجابات API وأخطائها
- إنشاء عميل API بسيط