ورود
سورس سافت bread crumb arrow icon وبلاگ bread crumb arrow icon آموزش JSON در PHP

راهنمای جامع JSON در PHP؛ از مبانی تا نکات امنیتی و حرفه‌ای

برای پخش ویدیو کلیک کنید
مالک پست تعیین نشده
clock icon مدت زمان مطالعه: 10 دقیقه
comment icon 0 نظرات
1404/09/29

تو دنیای امروز برنامه‌ نویسی، تبادل داده بین سیستم‌ ها به یکی از بخش‌ های جدانشدنی توسعه نرم‌ افزار تبدیل شده. برای مدت‌ ها XML گزینه اصلی توسعه‌ دهنده‌ ها بود، اما با گسترش وب و نیاز به ساختار های ساده‌ و سبک‌ تر، JSON وارد شد و خیلی زود جای XML رو گرفت.

JSON دیگه فقط یه فرمت معمولی برای ذخیره داده‌ ها نیست و حالا نقش یک زبان مشترک رو داره که سرویس‌ ها و سیستم‌ های مختلف باهاش حرف میزنن. تقریباً همه زبان‌ های برنامه‌ نویسی، فریم‌ ورک‌ ها و API ها هم از اون پشتیبانی می‌ کنن.

در این مقاله به‌ صورت جامع بررسی می‌ کنیم:

آموزش نحوه تجزیه JSON در PHP

JSON چیه و ساختارش چطوره؟

JSON یه فرمت متنی ساده برای ذخیره و تبادل داده‌ ست. داده‌ ها به شکل کلید-مقدار نوشته میشن و میتونن شامل آرایه‌ ها و آبجکت‌ های تو در تو باشن:

مثال ساده:

{ 
"Student": [ 
{ "Name": "Riya", "Roll": 7058, "Subject": "Java" }, 
{ "Name": "Anubha", "Roll": 7059, "Subject": "SAP" } 
]
}

اینجا اطلاعات هر دانش‌ آموز داخل یه شیء هست و همشون توی آرایه‌ ای به اسم Student ذخیره شدن.

مراحل تجزیه JSON در PHP

1- خواندن محتوای فایل JSON

ساده‌ ترین راه استفاده از file_get_contacts() هست:

$json = file_get_contents('my_data.json');

این خط کل محتوای فایل رو به صورت یه رشته برمی‌ گردونه.

مراحل تجزیه JSON در PHP - خواندن محتوای فایل JSON

نکته: همیشه مطمئن بشید فایل با UTF-8 ذخیره شده باشه. وگرنه کاراکترهای فارسی/خاص بهم میریزن.

2- تبدیل JSON به داده‌های PHP

حالا باید رشته JSON رو به یه چیزی تبدیل کنیم که PHP بتونه باهاش کار کنه. این کارو با json_decode () انجام میدیم:

$data = json_decode($json, true);
$objectData = json_decode($json);
echo $objectData->Student[0]->Name;

تحلیل:

  • آرایه برای داده‌ های جدول‌ مانند (مثل لیست‌ ها و داده‌ های تکرارشونده) راحت‌ تره.

  • شیء برای داده‌ های دامنه برنامه (Entityها مثل کاربر، سفارش، محصول) طبیعی‌ تره.

3- مدیریت خطا

از PHP 7.3 به بعد، می‌ تونید با JSON_THROW_ON_ERROR خیلی تمیزتر خطاها رو بگیرید:

try { 
$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) { 
echo "Error in JSON: " . $e->getMessage();
}

4- دسترسی به داده‌ های تجزیه‌ شده

با استفاده از حلقه‌ ها میتونیم داده‌ ها رو راحت بخونیم:

foreach ($data['Student'] as $student) { 
echo "Name: " . $student['Name']. "\n"; 
echo "Roll: " . $student['Roll'] . "\n"; 
echo "Subject: " . $student['subject'] . "\n";
}

برای داده‌ های تو در تو یا پیچیده، می‌ تونیم از توابع بازگشتی استفاده کنیم:

function printData($arr) { 
foreach ($arr as $key => $value) { 
if (is_array($value)) { 
printData($value); 
} else { 
echo "$key: $value\n"; 
} 
}
}
printData($data);

این روش برای هر نوع داده پیچیده‌ ای کار می‌کنه.

فراتر از پایه: نکات حرفه‌ای و تحلیل‌ های عمیق

  • جلوگیری از Double Encoding

یکی از دام‌ های رایج اینه که دوباره روی داده JSON شده، jason_encode بزنید:

json_encode(json_encode($data));
  • کنترل خروجی JSON

echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
  • JASON_PRETTY_PRINT → خواناتر شدن خروجی

  • JASON_UNESCAPED_UNICODE → جلوگیری از به‌ هم‌ ریختن متن فارسی

  • اعتبارسنجی با JSON Schema

برای API های حساس Parse کردن JSON  کافی نیست و شما باید ساختارش رو هم اعتبارسنجی کنید. ابزارهایی مثل این کار رو انجام میدن.

  • کار با داده‌ های حجیم

برای JSON های بزرگ (مثلاً گزارش‌ های چندصد مگابایتی)، استفاده از file_get_contacts() باعث میشه حافظه منفجر بشه! به‌جاش از Streaming Parser ‌ها مثل JasonMachine استفاده کنید.

دیدگاه تحلیلی: PHP برای داده‌ های سنگین بهینه نشده، بنابراین اگر پروژه‌ تون نیاز به پردازش حجم زیاد JSON داره، معماری رو به‌ سمت Stream Processing ببرید.

JSON و امنیت

JSON می‌ تونه دروازه حمله باشه:

  • JSON Injection: وقتی داده خام مستقیماً تو HTML یا کوئری استفاده بشه.

  • Schema Poisoning: وقتی ساختار داده عمداً تغییر کنه.

تحلیل: فقط Parse کافی نیست. همیشه JSON رو اعتبارسنجی و Sanitization کنید.

JSON و امنیت

آینده JSON در PHP

  • GraphQL به‌عنوان جایگزین معرفی شد، اما همچنان خروجیش JSON هست.

  • قابلیت‌ هایی مثل Typed Properties (PHP 7.4+) و Enums (PHP 8.1) باعث میشن JSON خیلی راحت‌ تر به ساختارهای PHP مپ بشه.

مثال پیشرفته: کار با API

بیایید تصور کنیم  داده‌ ها رو از یه API بیرونی بگیریم و بعد با اونا کار کنیم:

$apiUrl = "https://api.example.com/students";
$response = file_get_contents($apiUrl);
$data = json_decode($response, true);

if (json_last_error() !== JSON_ERROR_NONE) {
die("??? ?? ????? JSON ?? API: " . json_last_error_msg());
}

foreach ($data['Student'] as $student) {
echo "{$student['Name']} - {$student['Subject']}\n";
}
  • یه تابع wrapper بساز که JSON رو parse کنه، خطاها رو مدیریت کنه و داده‌ ها رو فیلتر کنه.

  • برای JSON های متغیر هم قبل از پردازش، داده‌ ها رو normalize کن تا کدت همیشه راحت کار کنه.

نکات حرفه ای:

  • JSON های بزرگ رو Lazy Load یا فقط داده‌ های لازم رو پردازش کن.

  • از روش‌ های Memory-efficient استفاده کن.

  • همیشه داده‌ ها رو اعتبارسنجی و مدیریت خطا کن.

سخن آخر

تجزیه (Parse) JSON تو PHP یکی از مهارت‌ های پایه و خیلی مهم برای کار با داده‌ های وب و API هاست. همون‌ طور که دیدیم، با توابع json_encode ()  و json_decode ()  راحت می‌ تونیم داده‌ های PHP رو به JSON تبدیل کنیم و برعکس، JSON رو به آرایه یا شی PHP تبدیل کنیم. یاد گرفتن کار با JSON باعث میشه برنامه‌ نویسیت حرفه‌ ای‌ تر بشه و راحت‌ تر بتونی با API ها و سرویس‌ های خارجی کار کنی.

با تمرین و پیاده‌ سازی مثال‌ های واقعی، مهارتت تو کار با JSON بهتر میشه و میتونی برنامه‌ های سریع، پویا و انعطاف‌ پذیر بسازی که با داده‌ های مدرن وب کاملاً جور در بیان.

اگه هنگام اجرای این تمرینات به مشکلی برخوردید، با ما در میان بذارید تا شما رو بهتر راهنمایی کنیم!

این مقاله چقدر برای شما مفید بود؟
0 امتیاز از 0 رای
tags
برچسب ها
questions
سوالات متداول تجزیه JSON در PHP

بله، json_decode() به صورت بازگشتی کل ساختار JSON را به آرایه یا شیء تبدیل می‌ کند.

خیر، اگر JSON نامعتبر باشد خروجی null است. بهتر است همیشه خطا را با json_last_error() بررسی کنید.

دیدگاه و پرسش

هیچ نظری ثبت نشده است