توابع JSON در php
JSON شیوهای استاندارد برای نگهداری، انتقال و نمایش اطلاعات است. این شیوه با در نظر گرفتن سهولت خوانایی و سهولت استفاده طراحی شده است.
زبان PHP به صورت پیشفرض حاوی دستوراتی برای ایجاد و پردازش JSON است. این دو تابع عبارتند از: json_encode و json_decode. توابع جانبی دیگری هم در php موجود است که در ادامه این توابع را با مثال بررسی میکنیم.
json_encode
این تابع یک متغیر حاوی اطلاعات را در php دریافت میکند و آن را به رشتهای حاوی عبارتهای JSON برمیگرداند.
متغیر ارسال شده به این دستور میتواند هر نوع دادهای به جز resource را در خود نگهداری کند.
مقدار بازگشتی این تابع در صورت عدم موفقیت مقدار false خواهد بود که برای مقایسهی آن بهتر است از علامت سه مساوی «===» استفاده کنید.
1 2 3 4 |
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?> |
مقدار بازگشتی تابع فوق برابر رشتهی زیر خواهد بود:
1 |
{"a":1,"b":2,"c":3,"d":4,"e":5} |
json_decode
تابع دوم وظیفهای برعکس تابع json_encode دارد. این تابع یک رشتهی حاوی عبارتهای JSON را دریافت میکند و آن را به متغیر php تبدیل میکند.
بر خلاف Javascript که در رعایت اسنانداردها بسیار منعطف عمل میکند، این دستور برای عملکرد صحیح، نیاز دارد تا یک عبارت JSON با رعایت دقیق استانداردها دریافت کند.
1 2 3 4 |
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); ?> |
عبارت خروجی در قطعه کد بالا به شکل زیر خواهد بود:
1 2 3 4 5 6 7 |
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } |
json_last_error و json_error_msg
این دو تابع برای بررسی آخرین خطای رخ داده در هنگام استفاده از توابع JSON را برمیگرداند. تابع اول کد خطا را برمیگرداند و تابع دوم متن پیام خطای رخ داده را نشان میدهد. برای مثال به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
$json = '{"name":"ali","age":"25","city":"Tehran"}'; $data = json_decode( $json ); if( json_last_error() === JSON_ERROR_NONE ) { print_r( $data ); } else { echo "Error: " . json_last_error_msg(); } |
json_format
این تابع یک رشته JSON را با فاصلهگذاری و درج خط قالببندی میکند تا برای انسان قابلیت خوانایی بهتری پیدا کند. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 |
$json = '{"name":"ali","age":25,"city":"Tehran"}'; $formattedJson = json_format( $json ); echo $formattedJson; // خروجی // { // "name": "ali", // "age": 25, // "city": "Tehran" // } |