PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : توابع JSON در php



CodeBox
October 10th, 2019, 12:55
http://redup.ir/img.php?image=8209_web_service_590m.png (http://redup.ir/)



JSON شیوه‌ای استاندارد برای نگهداری، انتقال و نمایش اطلاعات است. این شیوه با در نظر گرفتن سهولت خوانایی و سهولت استفاده طراحی شده است.

زبان PHP به صورت پیش‌فرض حاوی دستوراتی برای ایجاد و پردازش JSON است. این دو تابع عبارتند از: json_encode و json_decode.

json_encode

این تابع یک متغیر حاوی اطلاعات را در php دریافت می‌کند و آن را به رشته‌ای حاوی عبارت‌های JSON برمی‌گرداند.
متغیر ارسال شده به این دستور می‌تواند هر نوع داده‌ای به جز resource را در خود نگهداری کند.
مقدار بازگشتی این تابع در صورت عدم موفقیت مقدار false خواهد بود که برای مقایسه‌ی آن بهتر است از علامت سه مساوی «===» استفاده کنید.




<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>




مقدار بازگشتی تابع فوق برابر رشته‌ی زیر خواهد بود:


{"a":1,"b":2,"c":3,"d":4,"e":5}



json_decode

تابع دوم وظیفه‌ای برعکس تابع json_encode دارد. این تابع یک رشته‌ی حاوی عبارت‌های JSON را دریافت می‌کند و آن را به متغیر php تبدیل می‌کند.
بر خلاف Javascript که در رعایت اسنانداردها بسیار منعطف عمل می‌کند، این دستور برای عملکرد صحیح،‌ نیاز دارد تا یک عبارت JSON با رعایت دقیق استانداردها دریافت کند.



<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>



عبارت خروجی در قطعه کد بالا به شکل زیر خواهد بود:



object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

asiacat
October 11th, 2019, 02:45
json_decode

تابع دوم وظیفه‌ای برعکس تابع json_encode دارد. این تابع یک رشته‌ی حاوی عبارت‌های JSON را دریافت می‌کند و آن را به متغیر php تبدیل می‌کند.
بر خلاف Javascript که در رعایت اسنانداردها بسیار منعطف عمل می‌کند، این دستور برای عملکرد صحیح،‌ نیاز دارد تا یک عبارت JSON با رعایت دقیق استانداردها دریافت کند.



<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>



عبارت خروجی در قطعه کد بالا به شکل زیر خواهد بود:



object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}



برا تکمیل این بخش باید عرض کنم ان تابع بشکل تک ورودی دقیقا برعکس عمل نمیکنه و همونطوری که خودتونم نوشتید stdClass برمیگردونه

برای اینکه کاملا برعکس عمل کنه (یعنی یک جیسون بگیره و یک آرایه php برگردونه) باید بشک زیر باشه



<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));?>