JSON چیست؟ آموزش JSON
JSON یا JavaScript Object Notation یک فرمت تبادل داده سبک و مبتنی بر پایه متن است. این فرمت از سینتکس جاوا اسکریپت گرفته شده است، اما مستقل از زبان است، به این معنی که میتوان آن را با هر زبان برنامهنویسی مانند پایتون، جاوا یا سیشارپ استفاده کرد.
JSON دادهها را با استفاده از جفتهای کلید-مقدار و لیستهای مرتب ساختاربندی میکند که آن را هم برای انسان قابل خواندن و هم برای ماشین قابل تجزیه میکند. سادگی و سینتکس حداقلی آن، آن را به استاندارد بالفعل برای انتقال دادهها در APIهای وب تبدیل کرده است.

هنگامی که برنامهها از طریق اینترنت ارتباط برقرار میکنند اغلب اطلاعات را با فرمت JSON تبادل میکنند زیرا فشرده است، تولید آن آسان است و پردازش آن به آسانی انجام میشود. برخلاف XML در JSON از برچسبهای طولانی خبری نیست که منجر به اندازه فایل کوچکتر و انتقال سریعتر میشود.
برای توسعهدهندگان، یادگیری JSON فوقالعاده آسان است، به خصوص برای کسانی که با مفاهیم اولیه برنامهنویسی آشنا هستند. حتی مبتدیان میتوانند سینتکس آن را به سرعت درک کنند، زیرا ساختار فرهنگ لغتها یا اشیاء را در بسیاری از زبانها منعکس میکند. استفاده گسترده از آن در APIهای RESTful، فایلهای پیکربندی و پایگاههای داده NoSQL، بر تطبیقپذیری و کارایی آن در توسعه نرمافزارهای مدرن تأکید دارد.
چه تفاوتهایی بین JSON و XML وجود دارد؟
JSON در مقایسه با XML، سادهتر، سبکتر و خواناتر است. XML ساختار سلسله مراتبی پیچیدهتری دارد و برای ذخیره دادههای ساختاریافته مناسبتر است.
آیا JSON امن است؟
JSON به طور ذاتی امن نیست و میتواند برای تزریق کد مخرب مورد سوء استفاده قرار گیرد. برای ایمن نگه داشتن دادههای JSON، باید در نگهداری و ارسال و دریافت اطلاعات کدگذاری شده به شکل JSON، نکات ایمنی لازم را رعایت کنید تا خطری متوجه اطلاعات و نرمافزارهای شما نشود.
مثال نگهداری اطلاعات به شکل جیسون
در ادامه یک مثال از شیوهی نگهداری اطلاعات JSON را مشاهده میکنید:
|
1 2 3 4 |
var companies = [ { id: 1, name: 'roka' }, { id: 1, name: 'foo' } ]; |
در مثال بالا آرایهای از دو شیء با شیوهی JSON در یک متغیر ذخیرهسازی شده است.
قواعد ذخیرهسازی اطلاعات با فرمت جیسون
قوانین نگهداری دادهها با فرمت JSON عبارتند از:
- اشیا( Object ) در JSON باید میان آکولاد «{}» قرار بگیرند.
- اعضای شیء با علامت ویرگول«,» از هم جدا میشوند.
- آرایهها در JSON باید میان کروشه «[]» قرار بگیرند.
- اعضای آرایه با علامت ویرگول «,» از یکدیگر جدا میشوند.
- برای تعریف یک عضو در یک شیء JSON، ابتدا «نام عضو» سپس دونقطه«:» و در پایان «مقدار» نوشته میشود.
- نام اعضای شیء میبایست داخل دو گیومه «"» قرار بگیرند.
- مقدار میتواند یکی از انواع «عدد»، «رشته»، «بولی»، «آرایه»، «شیء» و «نال» را بپذیرد. سایر انواع داده باید به صورتی دیگر ذخیره شوند.
- انواع رشتهای باید داخل دو گیومه «"» قرار بگیرند.
- بسته به زبان مبدا و مقصد انواع دادهی دیگری نیز ممکن است قابل پذیرش باشند.
نمونه فایل JSON
به مثالی کاملتر از نگهداری اطلاعات به فرمت JSON که تمامی قوانین در آن رعایت شده است توجه کنید:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var user_json = { "code" : 1234, "fname" : "ali", "lname" : "alavi", "favories" : [ "book", "sport", "travel", "eating" ] }; var years_json = [ 1395, 1396, 1397, 1398 ]; var months_json = { "1" : "فروردین", "2" : "اردیبهشت", "3" : "خرداد", "4" : "تیر" // ... }; |
تبدیل JSON به اکسل
تبدیل JSON به اکسل شامل تبدیل دادههای ساختاریافته JSON به فرمت جدولی سازگار با نرمافزارهای صفحه گسترده مانند مایکروسافت اکسل یا گوگل شیت است. این کار برای تجزیه و تحلیل دادهها، گزارشدهی یا اشتراکگذاری با کاربران غیرفنی مفید است. ابزارهایی مانند پایتون (با استفاده از پانداس)، مبدلهای آنلاین یا Power Query داخلی اکسل میتوانند JSON را پردازش کنند و اشیاء یا آرایههای تو در تو آن را به سطرها و ستونها تبدیل کنند.
با این حال، ساختارهای JSON تو در تو یا نامنظم ممکن است قبل از تبدیل نیاز به پیشپردازش برای مسطح کردن دادهها داشته باشند. پس از تبدیل، دادهها قابل ویرایش، فیلتر و مناسب برای نمودارها یا جداول محوری میشوند و شکاف بین پاسخهای خام API و درک عملی را در یک رابط کاربری آشنا پوشش میدهند.
استفاده از JSON در جاوااسکریپت
زبان جاوااسکرپیت بسیاری از محدودیتهای موجود در استاندارد JSON چشمپوشی میکند. برای مثال انواع داده در جاوااسکریپت به تمامی انواع دادهی قابل قبول در این زبان گسترش مییابد. قرار دادن نام اعضای شیء میان گیومه الزامی نیست. استفاده از گیومه یا آپستروف «'» برای رشتهها اختیاری است و بسیاری آزادیهای دیگر که تنها در این زبان قابل استفاده است.
چنانچه بخواهیم از JSON برای انتقال اطلاعات میان زبانهای مختلف استفاده کنیم، رعایت قوانین گفته شده در جهت عملکرد صحیح الزامی خواهد بود.
استفاده از JSON در جاوااسکریپت بسیار آسان است. برای خواندن اطلاعات ذخیره شده در یک متغیر به شکل زیر عمل میکنیم:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
var years_json = [ 1395, 1396, 1397, 1398 ]; alert( years_json[ 1 ] ); var user = { "fname" : "ali", "surname" : "alavi" }; alert( user.fname ); // or alert( user[ "fname" ] ); |
در زبان جاواسکریپت، برای خواندن اعضای اشیا، هم با استفاده از نقطه «.» و هم به شکل آرایه «[]» میتوان به اعضای آن دسترسی پیدا کرد.
تبدیل JSON به رشته
برای اینکه بتوان اطلاعات را به شکل JSON منتقل یا ذخیرهسازی کرد، لازم است تا پیش از انتقال یا ذخیرهسازی به رشته تبدیل شود و پس از دریافت یا خواندن مجددا به اطلاعات تبدیل شود.
این تبدیل در زبان جاوااسکریپت به شکل زیر انجام میشود:
|
1 2 3 4 5 6 7 |
var roka = { "code" : "1234", "name": "roka" }; var json_string = JSON.stringify( roka ); alert( json_string ); // '{"code":"1234","name":"roka"}' |
برای تبدیل آرایه یا اشیا در زبانهای دیگر برنامهنویسی نیز اغلب دستورات یا کتابخانههایی موجود است. برای مثال در زبان php دستور json_encode به این منظور تعبیه شده است.
تبدیل رشته به JSON
پس از انتقال رشتهی JSON یا پس از بارخوانی آن از پایگاه داده، لازم است تا این رشته به شیئ یا آرایه تبدیل شود. انجام این کار در جاوااسکریپت به شکل زیر انجام میشود:
|
1 2 3 |
var json_string = '{"code":"1234","name":"roka"}'; var json = JSON.parse( json_string ); alert( json.name ); |
دستور JSON.parse به رعایت قوانین JSON حساس است و اگر یکی از این قوانین به درستی در رشته رعایت نشده باشد، این دستور با خطا مواجه خواهد شد.
JSON در jQuery
در جی کوئری علاوه بر دستورات jQuery.getJSON و jQuery.parseJSON که برای ارسال درخواست AJAX و تبدیل رشتهی JSON به شیء کاربرد دارند. یک ویژگی مفید در ارسال درخواستهای Ajax در jQuery تعبیه شده است. به این صورت که اگر نوع محتوای دریافتی «Content-Type» از نوع «application/json» باشد، جیکوئری به صورت خودکار آن را از حالت رشته به متغیر تبدیل میکند.
ایجاد خروجی از نوع JSON در php به شکل زیر امکانپذیر است:
|
1 2 3 4 5 |
<?php $data = array( /* ... */ ); header( 'Content-Type: application/json' ); echo json_encode( $data ); ?> |
انتقال اطلاعات حجیم
زبانهای نشانهگذاری مثل JSON و XML برای انتقال اطلاعات با حجم محدود اغلب مورد استفاده قرار میگیرند. ولی اگر حجم اطلاعات زیاد باشد، ممکن است استفاده از این روشها، کارایی لازم را نداشته باشد. در چنین شرایطی ممکن است گزینههای دیگر مثل پایگاه دادههای فایلی نظیر SQLite مورد توجه قرار بگیرند.
JSON Streaming چیست؟
JSON Streaming به روشی برای ارسال و دریافت دادههای JSON به صورت قطعات کوچک و متوالی به جای ارسال کل شیء JSON به یکباره اشاره دارد. این روش میتواند برای برنامههایی که با حجم زیادی از دادههای JSON سروکار دارند، مانند برنامههای چت یا برنامههای ردیابی زنده، مفید باشد.
روشهای بهکارگیری JSON Streaming
روشهای مختلفی برای استریم کردن JSON وجود دارد که بسته به زبان برنامهنویسی و ابزارهای در دسترس میتوان از آنها استفاده کرد. فریمورک لاراول ۱۰.۴۳ هم یک Response جدید برای ارسال استریم جیسون اضافه کرده است.
سلام
من یه ارایه رو تو پی اچ پی به رشته ی جیسون تبدیل کردم و تو جاوا اسکریپت خوندم
اما میخام بهم به جاای رشته تو خروجی عدد بده
از تابع JSON.parse هم برای اینکار استفاده می کنم جواب نمیده
اگه کسی میدونه راهنماییم کنه
با سلام
یا باید موقع ارسال اطلاعات از php دقت کنید که نوع دادهها عددی باشند یا موقع پردازش در سمت جاوااسکریپت آنها را به صورت صریح با استفاده از کلاس Number به عدد تبدیل کنید