مقدمه
JSON، مخفف JavaScript Object Notation، قالبی برای اشتراک گذاری داده است. همانطور که از نام آن پیداست، JSON از زبان برنامه نویسی جاوا اسکریپت مشتق شده است، اما برای بسیاری از زبان ها از جمله Python، Ruby، PHP و Java در دسترس است. JSON معمولاً مانند نام “Jason” تلفظ می شود.
JSON همچنین خوانا، سبک وزن است، جایگزین خوبی برای XML ارائه می دهد و به قالب بندی بسیار کمتری نیاز دارد. این راهنمای اطلاعاتی در مورد دادههایی که میتوانید در فایلهای JSON استفاده کنید و ساختار کلی و نحو این قالب بحث میکند.
درک نحو و ساختار
JSON از پسوند json. زمانی که به تنهایی می ایستد استفاده می کند، و زمانی که در قالب فایل دیگری تعریف می شود (مانند .html)، می تواند در داخل نقل قول ها به عنوان یک رشته JSON ظاهر شود، یا می تواند یک شی اختصاص داده شده به یک متغیر باشد. این فرمت بین وب سرور و سرویس گیرنده یا مرورگر انتقال می یابد.
یک شی JSON یک قالب داده کلید-مقدار است که معمولاً در پرانتزهای فرفری ارائه میشود. هنگامی که با JSON کار می کنید، احتمالاً با اشیاء JSON در یک فایل json. مواجه خواهید شد، اما آنها همچنین می توانند به عنوان یک شی یا رشته JSON در متن یک برنامه وجود داشته باشند.
در اینجا مثالی از یک شی JSON آمده است:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987
}
اگرچه این یک مثال کوتاه است، و JSON میتواند خطوط زیادی داشته باشد، این نشان میدهد که قالب به طور کلی با دو پرانتز (یا براکتهای فرفری) تنظیم میشود که با {} در دو طرف آن و با کلید-مقدار نمایش داده میشوند. جفت ها فضای بین را پر می کنند. بیشتر داده های مورد استفاده در JSON در یک شیء JSON کپسوله می شوند.
جفتهای کلید-مقدار یک دونقطه بین خود دارند مانند “key”: “value”. هر جفت کلید-مقدار با کاما از هم جدا می شود، بنابراین وسط یک JSON به صورت زیر فهرست می شود: “key” : “value”، “key”: “value”، “key”: “value”. در مثال قبلی، اولین جفت کلید-مقدار “first_name” است: “Sammy”.
کلیدهای JSON در سمت چپ کولون قرار دارند. آنها باید مانند “کلید” در دو علامت نقل قول پیچیده شوند و می توانند هر رشته معتبری باشند. در هر شی، کلیدها باید منحصر به فرد باشند. این رشتههای کلیدی میتوانند شامل فضاهای خالی مانند «نام اول» باشند، اما این میتواند دسترسی به آن را هنگام برنامهنویسی سختتر کند، بنابراین بهتر است مانند «first_name» از زیرخطها استفاده کنید.
مقادیر JSON در سمت راست کولون یافت می شوند. در سطح گرانول، اینها باید یکی از شش نوع داده زیر باشند:
- strings
- numbers
- objects
- arrays
- Booleans (true or false)
- null
در سطح وسیعتر، مقادیر نیز میتوانند از انواع دادههای پیچیده شی یا آرایه JSON ساخته شوند که در بخش بعدی مورد بحث قرار میگیرد.
هر یک از انواع دادههایی که بهعنوان مقادیر به JSON ارسال میشوند، نحو خاص خود را حفظ میکنند، به این معنی که رشتهها در گیومه قرار میگیرند، اما اعداد نیستند.
با فایلهای json.، معمولاً قالبی را دریافت میکنید که در چندین خط گسترش یافته است، اما JSON نیز میتواند همه را در یک خط نوشته شود، مانند مثال زیر:
{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }
این در یک نوع فایل دیگر یا زمانی که با یک رشته JSON مواجه می شوید رایج تر است.
نوشتن فرمت JSON در چندین خط اغلب آن را بسیار خواناتر می کند، به خصوص زمانی که با یک مجموعه داده بزرگ سروکار دارید. از آنجایی که JSON فضای خالی بین عناصر خود را نادیده میگیرد، میتوانید دونقطه و جفتهای کلید-مقدار خود را از هم جدا کنید تا دادهها را حتی برای انسان خواناتر کنید:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}
مهم است که به خاطر داشته باشید که اگرچه یک شی JSON شبیه به نظر می رسد، یک شی JSON همان قالب یک شی جاوا اسکریپت نیست، بنابراین اگرچه می توانید از توابع در اشیاء جاوا اسکریپت استفاده کنید، نمی توانید آنها را به عنوان مقادیر در JSON استفاده کنید. مهمترین ویژگی JSON این است که می توان آن را به راحتی بین زبان های برنامه نویسی در قالبی منتقل کرد که همه زبان های شرکت کننده بتوانند با آن کار کنند. در مقابل، اشیاء جاوا اسکریپت را فقط می توان مستقیماً از طریق زبان برنامه نویسی جاوا اسکریپت کار کرد.
JSON می تواند با سلسله مراتبی که از اشیاء و آرایه های تودرتو تشکیل شده است، پیچیده تر شود. در مرحله بعد، درباره این ساختارهای پیچیده بیشتر خواهید آموخت.
کار با انواع پیچیده در JSON
JSON می تواند علاوه بر آرایه های تودرتو، اشیاء تودرتو را در قالب JSON ذخیره کند. این اشیا و آرایهها بهعنوان مقادیر اختصاص داده شده به کلیدها ارسال میشوند و ممکن است از جفتهای کلید-مقدار نیز تشکیل شوند.
اشیاء تو در تو
در فایل users.json زیر، برای هر یک از چهار کاربر (“sammy”، “jesse”، “drew”، “jamie”) یک شی JSON تودرتو به عنوان مقدار برای هر یک از آنها ارسال می شود، با تودرتوی خودش. کلیدهای “نام کاربری” و “مکان” که به هر یک از کاربران مربوط می شود. هر ورودی کاربر در بلوک کد زیر نمونه ای از یک شی JSON تو در تو است:
{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}
در این مثال، از پرانتزهای فرفری برای تشکیل یک شی JSON تودرتو با نام کاربری و دادههای مکان مرتبط برای هر یک از چهار کاربر استفاده میشود. مانند هر مقدار دیگری، هنگام استفاده از اشیا، از کاما برای جداسازی عناصر استفاده می شود.
آرایه های تودرتو
همچنین میتوان دادهها را در قالب JSON با استفاده از آرایههای جاوا اسکریپت که به عنوان مقدار ارسال میشوند، تودرتو کرد. جاوا اسکریپت از براکت [ ] در دو انتهای نوع آرایه خود استفاده می کند. آرایه ها مجموعه های مرتب شده ای هستند و می توانند حاوی مقادیری از انواع داده های مختلف باشند.
به عنوان مثال، ممکن است هنگام برخورد با دادههای زیادی که میتوانند با هم گروهبندی شوند، از یک آرایه استفاده کنید، مانند زمانی که وبسایتها و نمایههای رسانههای اجتماعی مختلف مرتبط با یک کاربر واحد وجود دارد.
با اولین آرایه تودرتو، یک نمایه کاربری برای “Sammy” ممکن است به صورت زیر نمایش داده شود:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}
کلید “websites” و “social_media” هر کدام از یک آرایه برای قرار دادن اطلاعات مربوط به دو پیوند وب سایت Sammy و سه پیوند نمایه رسانه های اجتماعی استفاده می کنند. شما می توانید تشخیص دهید که این آرایه ها به دلیل استفاده از براکت مربع هستند.
استفاده از تودرتو در قالب JSON به شما امکان می دهد با داده های پیچیده تر و سلسله مراتبی کار کنید.
مقایسه JSON با XML
XML یا زبان نشانه گذاری توسعه پذیر، راهی برای ذخیره داده های قابل دسترسی است که هم توسط انسان و هم توسط ماشین قابل خواندن است. فرمت XML برای استفاده در بسیاری از زبان های برنامه نویسی در دسترس است.
از بسیاری جهات، XML شبیه به JSON است، اما به متن بسیار بیشتری نیاز دارد، و خواندن و نوشتن آن طولانیتر و وقتگیرتر میشود. XML همچنین باید با تجزیه کننده XML تجزیه شود، اما JSON را می توان با یک تابع استاندارد تجزیه کرد. همچنین، بر خلاف JSON، XML نمی تواند از آرایه ها استفاده کند.
در اینجا نمونه ای از فرمت XML آورده شده است:
<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>
اکنون، داده های مشابه ارائه شده در JSON را مقایسه کنید:
{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }
JSON بسیار فشرده تر است و نیازی به تگ های پایانی ندارد در حالی که XML نیازی به این دارد. علاوه بر این، XML مانند این مثال از JSON از آرایه استفاده نمی کند (که می توانید از طریق استفاده از براکت ها متوجه شوید).
اگر با HTML آشنایی داشته باشید، متوجه خواهید شد که XML در استفاده از برچسب ها کاملاً مشابه است. در حالی که JSON نسبت به XML نازکتر و پرمخاطبتر است و در بسیاری از موقعیتها، از جمله برنامههای AJAX، سریعتر از آن استفاده میکند، ابتدا میخواهید نوع پروژهای را که روی آن کار میکنید، قبل از تصمیمگیری در مورد استفاده از ساختارهای داده، بدانید.
نتیجه
JSON یک فرمت سبک وزن است که به شما امکان می دهد داده ها را به اشتراک بگذارید، ذخیره کنید و با آنها کار کنید. به عنوان یک فرمت، JSON با افزایش پشتیبانی در APIها، از جمله Twitter API، مواجه شده است. JSON همچنین یک فرمت طبیعی برای استفاده در جاوا اسکریپت است و پیاده سازی های زیادی برای استفاده در زبان های برنامه نویسی محبوب مختلف دارد. میتوانید پشتیبانی کامل زبان را در سایت «معرفی JSON» مطالعه کنید.
از آنجایی که احتمالاً فایلهای json. خود را ایجاد نمیکنید، بلکه آنها را از منابع دیگر تهیه میکنید، مهم است که کمتر به ساختار JSON فکر کنید و بیشتر در مورد نحوه بهترین استفاده از JSON در برنامههای خود فکر کنید. برای مثال، با استفاده از ابزار منبع باز Mr. Data Converter، میتوانید CSV یا دادههای جداشده با برگهها را که ممکن است در برنامههای صفحهگسترده پیدا کنید به JSON تبدیل کنید. همچنین می توانید XML را به JSON و بالعکس با استفاده از سایت Utilities-online.info دارای مجوز Creative Commons تبدیل کنید.
در نهایت، هنگام ترجمه انواع داده های دیگر به JSON، یا ایجاد نوع خود، می توانید JSON خود را با JSONLint اعتبارسنجی کنید و JSON خود را در زمینه توسعه وب با JSFiddle آزمایش کنید.