JSON چیست؟
در مقاله قبل با پروتکل HTTP آشنا شدیم و دیدیم که مرورگر و سرور از طریق Request و Response با یکدیگر ارتباط برقرار میکنند.
اما یک سؤال مهم باقی میماند:
اطلاعاتی که بین مرورگر و سرور ردوبدل میشوند، با چه فرمتی ارسال میشوند؟
یکی از رایجترین پاسخها، JSON (JavaScript Object Notation) است.
JSON یک قالب استاندارد برای نمایش، ذخیره و انتقال دادهها است که به دلیل سادگی و خوانایی بالا، امروزه تقریباً در تمام APIهای مدرن و بسیاری از نرمافزارها استفاده میشود.
به زبان ساده، JSON روشی برای نمایش دادهها است؛ بهگونهای که هم انسان بتواند آن را بخواند و هم برنامهها بتوانند آن را بهراحتی پردازش کنند.
چرا JSON به وجود آمد؟
وقتی دو نرمافزار میخواهند با یکدیگر ارتباط برقرار کنند، تنها ارسال اطلاعات کافی نیست؛ آنها باید روی قالب نمایش اطلاعات نیز توافق داشته باشند.
برای مثال، اگر یک سرور اطلاعات یک کاربر را ارسال کند، برنامه دریافتکننده باید دقیقاً بداند کدام بخش نام کاربر است، کدام بخش سن او را نشان میدهد و کدام قسمت مربوط به ایمیل است.
JSON دقیقاً برای حل همین مشکل طراحی شد و قالبی ساده، استاندارد و قابلفهم برای تبادل دادهها ارائه داد.
یک مثال ساده
فرض کنید میخواهید مشخصات یک دانشجو را روی یک برگه بنویسید.
بهجای اینکه اطلاعات را بهصورت یک متن طولانی بنویسید، آنها را به شکل منظم ثبت میکنید:
- نام: علی
- سن: ۲۲ سال
- رشته: مهندسی کامپیوتر
JSON نیز دقیقاً همین کار را انجام میدهد، با این تفاوت که این اطلاعات را در قالبی استاندارد و قابلدرک برای نرمافزارها نمایش میدهد.
JSON چه کاربردی دارد؟
امروزه JSON تقریباً در همه بخشهای توسعه نرمافزار استفاده میشود.
برخی از مهمترین کاربردهای آن عبارتاند از:
- ارسال اطلاعات بین مرورگر و سرور
- تبادل داده در APIها
- ارتباط بین سرویسهای مختلف
- ذخیره تنظیمات برنامهها
- انتقال اطلاعات بین اپلیکیشنهای موبایل و سرورها
- ذخیره داده در برخی فایلهای پیکربندی
به همین دلیل، یادگیری JSON یکی از اولین مهارتهایی است که هر برنامهنویس وب باید کسب کند.
ساختار JSON چگونه است؟
JSON از دو ساختار اصلی تشکیل شده است:
- Object
- Array
تقریباً تمام دادههایی که در JSON مشاهده میکنید، با استفاده از یکی یا ترکیبی از این دو ساختار ساخته میشوند.
Object چیست؟
Object مجموعهای از اطلاعات مرتبط است که بهصورت کلید (Key) و مقدار (Value) ذخیره میشوند.
برای مثال، اگر بخواهیم اطلاعات یک کاربر را نمایش دهیم، میتوانیم برای هر ویژگی یک کلید در نظر بگیریم و مقدار مربوط به آن را ذخیره کنیم.
برای نمونه، کلیدهایی مانند نام، ایمیل یا سن هر کدام مقدار مخصوص به خود را دارند.
به همین دلیل، Object یکی از پرکاربردترین بخشهای JSON محسوب میشود.
Key و Value چیست؟
هر داده در یک Object بهصورت یک جفت Key و Value ذخیره میشود.
Key نقش نام یا شناسه را دارد و مشخص میکند مقدار مربوط به چه چیزی است.
Value نیز مقدار واقعی آن ویژگی را نگه میدارد.
برای مثال، اگر Key برابر «نام» باشد، Value میتواند «علی» باشد.
این ساختار باعث میشود هم انسان و هم برنامه بتوانند اطلاعات را بهسادگی درک کنند.
Array چیست؟
گاهی لازم است چندین مقدار مشابه را کنار یکدیگر نگهداری کنیم.
در چنین شرایطی از Array استفاده میشود.
برای مثال، اگر بخواهیم لیست دورههایی را که یک دانشجو ثبتنام کرده ذخیره کنیم، استفاده از Array مناسبتر از تعریف چندین کلید جداگانه خواهد بود.
به همین دلیل، بسیاری از APIها هنگام ارسال فهرستی از محصولات، کاربران یا مقالات از Array استفاده میکنند.
چرا JSON اینقدر محبوب شده است؟
دلیل محبوبیت JSON تنها سادگی آن نیست.
تقریباً تمام زبانهای برنامهنویسی محبوب مانند Python، JavaScript، Java، C#، Go و PHP بهصورت پیشفرض از JSON پشتیبانی میکنند.
به همین دلیل، یک برنامه نوشتهشده با Python میتواند بهراحتی اطلاعات را بهصورت JSON برای برنامهای که با Java یا JavaScript نوشته شده ارسال کند.
این سازگاری بالا باعث شده JSON به یکی از مهمترین استانداردهای تبادل داده در اینترنت تبدیل شود.
JSON چه ارتباطی با HTTP دارد؟
در مقاله قبل دیدیم که HTTP مسئول انتقال Request و Response بین کلاینت و سرور است.
اما HTTP مشخص نمیکند اطلاعات داخل این پیامها با چه قالبی نوشته شوند.
در بسیاری از پروژههای امروزی، دادههای داخل Request و Response با استفاده از JSON ارسال میشوند.
به بیان ساده، HTTP وظیفه انتقال اطلاعات را بر عهده دارد و JSON یکی از رایجترین قالبهایی است که این اطلاعات را درون آن حمل میکند.
در بخش بعدی مقاله، با انواع دادههای JSON، قوانین نوشتن JSON، تفاوت آن با XML و نمونههای واقعی از استفاده JSON در APIها آشنا خواهیم شد.
JSON از چه نوع دادههایی پشتیبانی میکند؟
یکی از دلایل محبوبیت JSON، سادگی ساختار آن است. در عین حال، این قالب از چند نوع داده پرکاربرد پشتیبانی میکند که برای بیشتر برنامههای امروزی کافی هستند.
مهمترین انواع داده در JSON عبارتاند از:
- رشته (String)
- عدد (Number)
- بولی (Boolean)
- آرایه (Array)
- شیء (Object)
- مقدار Null
با ترکیب این چند نوع داده میتوان اطلاعات بسیار پیچیدهای را نیز نمایش داد.
String (رشته)
رشته برای ذخیره متن استفاده میشود.
برای مثال، نام کاربر، عنوان یک مقاله، آدرس ایمیل یا نام یک محصول همگی میتوانند بهصورت رشته ذخیره شوند.
در JSON رشتهها همیشه داخل علامت نقلقول دوتایی قرار میگیرند.
Number (عدد)
اعداد در JSON میتوانند صحیح یا اعشاری باشند.
برای مثال، سن یک کاربر، قیمت یک محصول، تعداد موجودی یا امتیاز یک فیلم معمولاً بهصورت عدد ذخیره میشوند.
در JSON نیازی نیست اعداد داخل نقلقول قرار بگیرند.
Boolean (بولی)
نوع داده Boolean تنها دو مقدار دارد:
- true
- false
از این نوع داده معمولاً برای نمایش وضعیتها استفاده میشود.
برای مثال، اینکه یک کاربر وارد حساب خود شده است یا خیر، یا اینکه یک محصول موجود است یا ناموجود.
Null
گاهی یک ویژگی وجود دارد، اما هنوز مقداری برای آن ثبت نشده است.
در چنین شرایطی از مقدار null استفاده میشود.
برای مثال، ممکن است شماره تلفن یک کاربر هنوز ثبت نشده باشد. در این حالت مقدار آن میتواند null باشد.
ترکیب Object و Array
قدرت واقعی JSON زمانی مشخص میشود که Objectها و Arrayها با یکدیگر ترکیب شوند.
برای مثال، یک فروشگاه اینترنتی میتواند اطلاعات یک سفارش را در قالب یک Object ارسال کند و داخل آن، لیستی از محصولات خریداریشده را بهصورت یک Array قرار دهد.
به همین دلیل، JSON میتواند ساختارهای بسیار ساده یا بسیار پیچیده را بهراحتی نمایش دهد.
قوانین نوشتن JSON
برای اینکه یک JSON معتبر باشد، باید چند قانون ساده را رعایت کند.
- کلیدها (Key) باید داخل علامت نقلقول دوتایی قرار بگیرند.
- رشتهها نیز باید داخل علامت نقلقول دوتایی نوشته شوند.
- بین هر Key و Value از علامت دونقطه استفاده میشود.
- بین اعضای مختلف از ویرگول استفاده میشود.
- آخرین عضو نباید بعد از خود ویرگول داشته باشد.
اگر یکی از این قوانین رعایت نشود، بسیاری از برنامهها قادر به پردازش JSON نخواهند بود.
JSON معتبر و JSON نامعتبر
برنامهها فقط میتوانند JSONهایی را پردازش کنند که از قوانین استاندارد پیروی کنند.
برای مثال، اگر یک کلید بدون نقلقول نوشته شود یا یک ویرگول اضافی در انتهای داده وجود داشته باشد، JSON نامعتبر محسوب میشود.
به همین دلیل، توسعهدهندگان معمولاً قبل از ارسال یا دریافت اطلاعات، معتبر بودن JSON را بررسی میکنند.
تفاوت JSON و XML
قبل از محبوب شدن JSON، بسیاری از نرمافزارها برای تبادل داده از XML استفاده میکردند.
اگرچه XML هنوز هم در برخی سیستمها کاربرد دارد، اما امروزه در بیشتر APIهای جدید از JSON استفاده میشود.
مهمترین تفاوتهای این دو عبارتاند از:
- JSON ساختار سادهتر و خواناتری دارد.
- حجم JSON معمولاً کمتر از XML است.
- تجزیه و پردازش JSON در بسیاری از زبانهای برنامهنویسی سادهتر است.
- تقریباً تمام APIهای مدرن JSON را بهعنوان قالب پیشفرض انتخاب کردهاند.
JSON در API چه نقشی دارد؟
یکی از مهمترین کاربردهای JSON در APIها است.
فرض کنید یک اپلیکیشن هواشناسی میخواهد وضعیت آبوهوا را از یک سرور دریافت کند.
اپلیکیشن یک Request برای API ارسال میکند.
سرور اطلاعات مربوط به دما، رطوبت، سرعت باد و سایر دادهها را معمولاً در قالب JSON داخل Response قرار میدهد.
سپس اپلیکیشن این JSON را پردازش کرده و اطلاعات را بهشکل مناسب به کاربر نمایش میدهد.
JSON در Django
اگر با Django کار کنید، احتمالاً بارها با JSON سروکار خواهید داشت.
برای مثال، هنگام توسعه یک REST API معمولاً دادهها بهصورت JSON بین کلاینت و سرور ردوبدل میشوند.
حتی بسیاری از اپلیکیشنهای موبایل که Backend آنها با Django توسعه داده شده است، تمام اطلاعات خود را در قالب JSON دریافت و ارسال میکنند.
به همین دلیل، شناخت JSON برای توسعهدهندگان Backend تقریباً یک مهارت ضروری محسوب میشود.
چه زمانی از JSON استفاده نمیشود؟
اگرچه JSON بسیار پرکاربرد است، اما همیشه بهترین انتخاب نیست.
برای مثال، اگر هدف نمایش یک صفحه وب باشد، سرور معمولاً HTML ارسال میکند، نه JSON.
همچنین برای انتقال فایلهای تصویری، ویدئوها یا اسناد، خود فایل ارسال میشود و نه دادهای در قالب JSON.
در بخش پایانی مقاله، مزایا و محدودیتهای JSON، اشتباهات رایج هنگام کار با آن و دلیل تبدیل شدن JSON به استاندارد اصلی تبادل داده در اینترنت را بررسی خواهیم کرد.
مزایای استفاده از JSON
JSON به دلایل مختلفی به رایجترین قالب تبادل داده در اینترنت تبدیل شده است. سادگی، خوانایی و پشتیبانی گسترده باعث شده تقریباً تمام زبانهای برنامهنویسی و فریمورکهای مدرن بتوانند بهراحتی با آن کار کنند.
مهمترین مزایای JSON عبارتاند از:
- ساختار ساده و خوانا برای انسان
- پردازش سریع توسط برنامهها
- حجم کمتر نسبت به بسیاری از قالبهای قدیمی مانند XML
- پشتیبانی توسط تقریباً تمام زبانهای برنامهنویسی
- مناسب برای ارتباط بین کلاینت و سرور
- انتخاب پیشفرض بسیاری از APIهای مدرن
آیا JSON یک زبان برنامهنویسی است؟
خیر. این یکی از رایجترین تصورات اشتباه درباره JSON است.
اگرچه نام JSON از JavaScript گرفته شده است، اما JSON یک زبان برنامهنویسی نیست.
JSON تنها یک قالب استاندارد برای نمایش و انتقال دادهها است.
به همین دلیل، تقریباً تمام زبانهای برنامهنویسی مانند Python، Java، C#، Go، PHP و JavaScript میتوانند اطلاعات JSON را بخوانند و تولید کنند.
JSON چه تفاوتی با دیتابیس دارد؟
گاهی افراد تازهکار تصور میکنند JSON نوعی دیتابیس است، در حالی که این دو مفهوم کاملاً متفاوت هستند.
دیتابیس وظیفه ذخیره، مدیریت و جستجوی اطلاعات را بر عهده دارد، اما JSON تنها روشی برای نمایش یا انتقال دادهها است.
برای مثال، ممکن است اطلاعات کاربران در PostgreSQL ذخیره شوند، اما زمانی که یک API این اطلاعات را برای مرورگر ارسال میکند، آنها را به قالب JSON تبدیل کند.
بنابراین، JSON جایگزین دیتابیس نیست، بلکه راهی برای تبادل دادهها بین سیستمهای مختلف است.
اشتباهات رایج هنگام کار با JSON
هنگام کار با JSON، برخی اشتباهات بسیار رایج هستند و میتوانند باعث شوند برنامه نتواند دادهها را پردازش کند.
- فراموش کردن نقلقول دوتایی برای کلیدها
- قرار دادن ویرگول اضافی بعد از آخرین عضو
- استفاده از نقلقول تکی بهجای نقلقول دوتایی
- فراموش کردن بستن آکولاد یا کروشه
- ارسال داده با ساختاری متفاوت از چیزی که API انتظار دارد
به همین دلیل، توسعهدهندگان معمولاً قبل از ارسال یا پردازش اطلاعات، معتبر بودن JSON را بررسی میکنند.
چرا تقریباً همه APIها از JSON استفاده میکنند؟
امروزه بیشتر APIهای وب، دادهها را در قالب JSON ارسال و دریافت میکنند.
دلیل این موضوع تنها سادگی JSON نیست؛ بلکه این قالب تقریباً در همه زبانهای برنامهنویسی بهخوبی پشتیبانی میشود و حجم کمی دارد.
برای مثال، اگر Backend یک فروشگاه اینترنتی با Django نوشته شده باشد و اپلیکیشن موبایل آن با Flutter یا Kotlin توسعه داده شده باشد، هر دو میتوانند بدون مشکل دادهها را در قالب JSON تبادل کنند.
همین ویژگی باعث شده JSON به زبان مشترک بسیاری از سرویسهای اینترنتی تبدیل شود.
چرا یادگیری JSON برای برنامهنویسان مهم است؟
اگر قصد دارید وارد حوزه توسعه وب، Backend، Frontend یا حتی برنامهنویسی موبایل شوید، دیر یا زود با JSON سروکار خواهید داشت.
بیشتر APIها، سرویسهای ابری، اپلیکیشنهای موبایل و حتی بسیاری از فایلهای تنظیمات نرمافزارها از JSON استفاده میکنند.
به همین دلیل، درک ساختار JSON یکی از مهارتهای پایهای برای هر برنامهنویس محسوب میشود.
جمعبندی
JSON یا JavaScript Object Notation یک قالب استاندارد برای نمایش و تبادل دادهها است. این قالب به دلیل سادگی، خوانایی و پشتیبانی گسترده، به انتخاب اصلی بسیاری از وبسایتها، APIها و نرمافزارهای مدرن تبدیل شده است.
JSON از ساختارهایی مانند Object و Array برای سازماندهی اطلاعات استفاده میکند و از انواع دادهای مانند String، Number، Boolean و Null پشتیبانی میکند.
اگر قصد توسعه API یا کار با فریمورکهایی مانند Django را دارید، یادگیری JSON یکی از اولین مهارتهایی است که به آن نیاز خواهید داشت.
سؤالات متداول
JSON چیست؟
JSON یک قالب استاندارد برای نمایش، ذخیره و تبادل دادهها بین نرمافزارها است که به دلیل سادگی و خوانایی بالا، کاربرد گستردهای در توسعه وب دارد.
آیا JSON زبان برنامهنویسی است؟
خیر. JSON یک زبان برنامهنویسی نیست و تنها قالبی برای نمایش دادهها محسوب میشود.
JSON چه کاربردی دارد؟
از JSON برای تبادل داده بین مرورگر و سرور، ارتباط APIها، اپلیکیشنهای موبایل، سرویسهای ابری و همچنین ذخیره برخی فایلهای تنظیمات استفاده میشود.
تفاوت JSON و XML چیست؟
JSON معمولاً ساختار سادهتر، حجم کمتر و خوانایی بیشتری نسبت به XML دارد و به همین دلیل در بسیاری از پروژههای جدید به گزینه اصلی برای تبادل داده تبدیل شده است.
مطالعه بیشتر
قدم بعدی چیست؟
اکنون که با JSON و نقش آن در تبادل دادهها آشنا شدید، در مقاله بعدی بررسی میکنیم REST API چیست و چرا امروزه بخش بزرگی از ارتباط بین وبسایتها، اپلیکیشنهای موبایل و سرویسهای اینترنتی بر اساس این معماری انجام میشود.
نظرات
هنوز نظری ثبت نشده؛ اولین نفر باشید.
ثبت نظر
در حال پاسخ به