در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
یکی از این فرمتها JSON بوده که سر واژه عبارت JavaScript Object Notation است. JSON به قدری ساده و قابل فهم است که اصطلاحا به آن Human Readable (قابلیت خواندن توسط انسان) را اطلاق میکنند. سرچشمه JSON از ارائه یک ساختار داده ساده و مربوط به ارائه نشات میگیرد. بعد از موفقیت JSON و ظهور سرویسهای REST و همین طور
JSON ،AJAX توانست جای خوبی برای پیشرفت خود باز کند. در حال حاضر اکثر سرویسهای سمت وب از XML و JSON برای خروجی اطلاعاتی خود استفاده میکنند که معروفترین آنها Twitter API است.برای مطالعه بیشتر در مورد JSON میتوانید به لینک «۱» مراجعه کنید.
فایلهای JSON با پسوند json شناخته میشوند، البته هیچ الزامی برای مشخصکردن پسوند فایل نیست؛ برای مثال شما میتوانید دادههای خروجی خود را به صورت json بدهید بدون این که فایل json درخواست شود.
همینطور MimeType فایلهایJSON با Application/JSON مشخص میشود، در حال حاضر بیشتر زبانهای برنامهنویسی دارای کلاسهایی برای تبدیل نوع دادههای خود به فرمت JSON هستند و همینطور برعکس. بگذارید این مساله را با یک مثال بیان کنیم. کد زیر را که با Php نوشته شده است در نظر بگیرید.
class test{
public $id;
public $name;
public $status;
}
$test = new test();
$test-»id = 1;
$test-»name = "Click!";
$test-»status = false;
$json = json-encode($test);
echo $json;
$fromjson = json-decode($json);
Var-dump($fromjson);
ما ابتدا یک کلاس به نام test تعریف کردیم که دارای 2 فیلد یکی به نام id و دیگری name و status است، سپس یک شیء از آن ساختیم و آن را مقداردهی کردیم. با استفاده از تابع json-encode آن را به یک ساختار داده json تبدیل کردهایم که خروجی آن به صورت زیر است:
{"id:1,"name":"Click!","status":false”}
همانطور که میبینید یک فرمت ساده و قابل فهم است و شما براحتی میتوانید دادههای خروجی خود را در سمت سرور به صورت json به سرویسگیرنده بدهید و اصطلاحا دادههای خود را Serialize کنید به فرمت JSON. این کاری است که تابع json-encode انجام میدهد. بعضی مواقع لازم است شما دادههای خود را از یک سرویس بگیرید که در آن صورت باید دادههای JSON را در برنامه خود Parse (تحلیل) کنید. برای این کار همانطور که میبینید از تابع json-decode استفاده شده که خروجی JSON را به یک کلاس از نوع test تبدیل کرده است. به این کار اصطلاحا Deserialize کردن میگویند.
مرسوم است برای این که این کار راحتتر انجام شود، از یک سری ساختار داده برای ذخیرهسازی اطلاعات استفاده میکنند و سپس ساختار داده را Serialize میکنند، اما خب همیشه و در همهجا نمیتوان از این روش استفاده کرد.
بگذارید قدری خروجی کد بالا را بررسی کنیم. همان طور که مشاهده میکنید یک ساختار کلید/ مقدار است، کلیک نام فیلد و مقدار هم مقدار آن فیلد است. همانگونه که در مثال بالا مشاهده میکنید id
:1 یعنی یک فیلد به نام Id وجود دارد که مقدار آن ۱ است و همینطور بقیه دادهها و مقدار نیز میتواند مقادیر متفاوتی داشته باشد. تعریف ساختاری کلی برای JSON به صورت زیر است: یک { باز، سپس به ازای هر نوع فیلد یک رشته متنی، سپس مقدار فیلد که خود مقدار فیلد میتواند مقادیر زیر را اتخاذ کند:عدد، یک شیء، ارائهای از یک شیء یا از یک نوع داده خاص، رشته متنی، مقدار Boolean که به صورتtrue-false ذخیره میشود، null که نشان میدهد آن فیلد مقدار ندارد.
در مورد null در زمان Deserialize کردن، با توجه به زبانی که در آن دارید این کار را انجام میدهید و مقادیر متفاوتی جایگزین میشود؛ به طور مثال در #C مقدار پیشفرض آن نوع داده محسوب میشود.
نکتهای که باید به آن دقت کرد این است که یک کلاس میتواند با کلاسهای دیگر نیز در ارتباط باشد. این ارتباط در خروجی json نیز وجود خواهد داشت، که باز بستگی به نوع روابطی دارد که بین کلاسها وجود دارد و در خروجی میآید.
به عنوان مثال یک کلاس شامل یک مجموعه از یک کلاس دیگر است. اگر قرار است خروجی Serialize شود، تمامی کلاسهایی که با این کلاس در ارتباط هستند نیز Serialize میشوند. در زمان Deserialize کردن نیز آن فیلدی که نشان دهنده یک کلاس در کلاس دیگر است نیز در خروجی میآید منتها با قدری تغییر در کد php که بالا نوشته شده است (آزمایش این کار به عهده خواننده است).
برای آشنایی بیشتر با ساختار داده JSON و همچنین کتابخانههایی که برای زبانهای مختلف برای آن نوشته شدهاست، میتوانید به لینک «۲» رجوع کنید.
امیربهاءالدین سبطالشیخ
پانوشتها:
1ـhttp://tools.ietf.org/html/rfc4627
2ـ http://www.json.org/
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: