امروزه با رشد روزافزون تکنولوژی، دادهها به عنصری با ارزش بسیار زیاد تبدیل شدهاند. همانطور که دادهها و اطلاعات مهماند، نگهداری و انتقال آنها هم مسئلهای مهم به شمار میرود. JSON مخفف (JavaScript Object Notation) یک فرمت برای ذخیرهسازی و انتقال اطلاعات است. در این مقاله از بلاگ آسا به بررسی این فرمت کاربردی میپردازیم.
JSON چیست؟
JSON یک فرمت ساده و خاص برای تبادل دادهها است که به طور گسترده در دنیای برنامهنویسی وب استفاده میشود. این فرمت به گونهای طراحی شده که هم برای انسانها خوانا باشد و هم به راحتی توسط ماشینها پردازش شود. جیسون از ساختارهای سادهای مثل اشیاء (Object) و آرایهها (Arrays) که به صورت کلید-مقدار (Key-Value) سازماندهی شده، ساخته شده است. به دلیل سادگی و کارایی بالای جیسون، این فرمت به عنوان یکی از محبوبترین فرمتها برای انتقال داده بین سرور و کلاینت در وب و موبایل شناخته شده است.
تاریخچه JSON
در اوایل دهه ۲۰۰۰ میلادی، فردی به نام داگلاس کراکفورد (Douglas Crockford) جیسون را معرفی کرد. او به دنبال فرمتی سادهتر و سبکتر از XML برای تبادل دادهها بود. در آن زمان، XML به عنوان فرمت اصلی برای تبادل دادهها بین سرورها و برنامههای وب شناخته میشد، اما مشکلاتی مثل پیچیدگی و سنگینی XML باعث شد تا توسعهدهندگان به دنبال راهحل های جایگزین بگردند.
ساختار شی گرا در جاوا اسکریپت به خودی خود میتوانست یک قالب ایدهآل برای تبادل دادهها باشد. بنابراین کراکفورد تصمیم گرفت از این ساختار به عنوان پایهای برای طراحی جیسون استفاده کند. جیسون به سرعت توانست به دلیل سادگی و کارایی بالا، توجه بسیاری از توسعهدهندگان را به خود جلب کند. تا اواسط دهه ۲۰۰۰ میلادی، جیسون به دلیل سبکتر بودن و سهولت بیشتر نسبت به XML، در بسیاری از پروژههای وب به کار رفت و به یکی از اصلیترین فرمتها برای تبادل داده در API های وب تبدیل شد. در نهایت اولین نسخه استاندارد جیسون در سال ۲۰۱۳ با استاندارد RFC-7158 منتشر شد.
آشنایی با ساختار JSON
ساختار جیسون بسیار ساده و خواناست که بر اساس اشیاء و آرایهها (Arrays) ساخته شده است. این ساختار به صورت متنی بوده و از سینتکس مشابه جاوا اسکریپت پیروی میکند. در ادامه اجزای اصلی جیسون را بررسی میکنیم:
۱- اشیاء (Objects)
اشیاء در جیسون با «{ }» تعریف میشوند و شامل مجموعهای از جفتهای کلید-مقدار (Key-Value) هستند. همه کلیدها به صورت رشته (String) و داخل علامت نقل قول دوتایی «” “» قرار میگیرند. بین کلید و مقدار از «:» استفاده میشود و هر جفت کلید-مقدار با «,» از هم جدا میشوند. همچنین در نظر داشته باشید که JSON به حروف کوچک و بزرگ حساس است یا به عبارتی (Case-sensitive) است.
مثال:
{
“name”: “Reza”,
“age”: ۲۵,
“city”: “Tehran”
}
۲- آرایهها (Arrays)
آرایهها در جیسون با «[ ]» تعریف میشوند و میتوانند شامل لیستی از مقادیر باشند.
عناصر داخل آرایه میتواند شامل هر نوع دادهای باشد. مثلا: رشته، عدد، بولین، اشیاء و حتی آرایههای دیگر. مقادیر داخل آرایه با «,» از هم جدا میشوند.
{
“names”: [“Reza”, “Amir”, “Sorena”]
}
۳- انواع دادهها (Types)
یکی از دلایلی که JSON را به یک فرمت کامل و قابل اعتماد تبدیل کرده، پشتیبانی از دادههای مختلف و متنوع است. در ادامه دادههایی که جیسون از آنها پشتیبانی میکند را بررسی میکنیم.
رشتهها (Strings): برای تعریف رشتهها میتوان از «” “» استفاده کرد.
اعداد (Numbers): اعداد در جیسون میتوانند صحیح و اعشاری باشند.
بولین (Booleans): مقادیر «true» و «false» در جیسون پشتیبانی میشود.
آرایهها (Arrays): به وسیله «[ ]» میتوانید لیستی از مقادیر مختلف تشکیل دهید.
اشیاء (Objects): به وسیله «{ }» میتوانید مجموعهای از Key-Value ها ایجاد کنید و اشیاء مورد نظر خود را بسازید.
خالی (Null): شما در جیسون میتوانید برای مقادیر مختلف از Null هم استفاده کنید.
مثال کامل از JSON
حال که با انواع دادهها در جیسون و ساختار کلی آن آشنا شدیم، نمونهای از محتوای یک فایل جیسون را با هم میبینیم.
{
“firstname”: “Ali”,
“lastname”: “Ahmadi”,
“age”: ۳۰,
“Marital status”: true,
“address”: {
“street”: “Taherkhani St”,
“city”: “Tehran”,
“zipCode”: ۱۲۳۴۵۶۸۹
},
“phoneNumbers”: [۱۲۳-۴۵۶-۷۸۹۰, ۹۸۷-۶۵۴-۳۲۱۰],
“Skills”: null
}
کاربردهای JSON در توسعه وب
جیسون جزو پرکاربردترین فرمتها در توسعه وب است و به دلیل سادگی و انعطافپذیری، نقش مهمی در تبادل دادهها بین سرویسها و برنامههای وب ایفا میکند. در ادامه برخی از کاربردهای مهم جیسون را در توسعه وب معرفی میکنیم.
۱- تبادل داده بین سرور و کلاینت
JSON برای انتقال داده بین کلاینت و سرور بسیار مناسب است. در توسعه وب، هنگام ارسال درخواستها از مرورگر به سرور (معمولا از طریق API)، دادهها به صورت JSON ارسال میشوند. سرور هم پاسخ خود را در قالب JSON به کلاینت بازمیگرداند. این فرایند خیلی سبک و سریع انجام میشود و به دلیل سادگی جیسون، پردازش دادهها هم در سرور و هم در کلاینت به راحتی صورت میگیرد.
۲- RESTful APIs
یکی از رایجترین کاربردهای جیسون در توسعه وب، استفاده از آن به عنوان فرمت اصلی برای ارسال و دریافت دادهها از APIهای RESTful است. این API ها بر اساس اصول REST کار میکنند و معمولا برای تعامل بین سیستمهای مختلف (مانند وبسایت و یک سرویس خارجی) مورد استفاده قرار میگیرند. هر چند در این نوع API از فرمتهای دیگر مانند XML هم استفاده میشود، اما جیسون به دلیل ساختار سبک و قابل فهم، انتخاب مناسبی برای تبادل داده در این نوع API ها است.
۳- JSON در AJAX
AJAX یکی از تکنیکهای رایج در توسعه وب است که به وبسایتها اجازه میدهد بدون نیاز به بارگزاری مجدد کل صفحه، با سرور ارتباط برقرار کنند. در این ارتباط جیسون به عنوان فرمت اصلی داده استفاده میشود.
AJAX با استفاده از مرورگر میتواند به سرور درخواست ارسال کند؛ بدون اینکه صفحه وب بهطور کامل رفرش شود. جیسون در اینجا به عنوان فرمت انتقال داده بین کلاینت و سرور عمل میکند.
۴- ذخیرهسازی دادهها
JSON برای ذخیرهسازی دادههای ساختار یافته بسیار مناسب است. بسیاری از پایگاههای داده NoSQL مانند MongoDB از JSON یا فرمتی مشابه به نام BSON (Binary JSON) برای ذخیره و مدیریت دادهها استفاده میکنند. این فرمتها به شما اجازه میدهد تا دادههای پیچیده را به راحتی در قالبی که هم برای انسان و هم برای سرور قابل خواندن و پردازش باشد، ذخیره کنید.
۵- پیکربندی برنامهها (Configuration)
جیسون به عنوان یک فرمت سبک و قابل فهم برای کانفیگ برنامهها هم استفاده میشود. بسیاری از فریمورکها و ابزارهای توسعه، فایلهای کانفیگ خود را به صورت جیسون ذخیره میکنند. این فایلها شامل تنظیمات و پارامترهای مختلفی هستند که برای پیکربندی محیط توسعه یا تولید یک اپلیکیشن استفاده میشوند.
۶- انتقال دادهها در وبسرویسها (Data Interchange)
بیشتر وبسرویسها و میکروسرویسها از JSON برای ارسال و دریافت دادهها استفاده میکنند. JSON به دلیل خوانایی و سبک بودن، انتخاب خوبی برای انتقال داده بین سرویسها و سیستمهای مختلف است. این قابلیت باعث میشود که ارتباط بین اپلیکیشنها سریعتر و کارآمدتر باشد.
۷- وبسوکتها (WebSockets)
وبسوکت یک پروتکل ارتباطی است که ارتباطات دوطرفه (کلاینت-سرور) را در زمان واقعی فراهم میکند. جیسون به عنوان یک فرمت انتقال داده در وبسوکت بسیار محبوب است؛ زیرا دادهها را به شکل متنی ساده و سبک منتقل میکند و به سرعت میتوان آنها را پردازش کرد.
۸- فرمت بینالمللی داده
JSON به دلیل سازگاری با اکثر زبانهای برنامهنویسی و سیستمها به یک فرمت جهانی برای انتقال داده تبدیل شده است. اکثر زبانهای برنامهنویسی کتابخانههایی برای تجزیه و تولید جیسون دارند که باعث میشود این فرمت به راحتی در پروژههای متنوع استفاده شود.
بیشتر بخوانید: تفاوت جاوا و جاوا اسکریپت چیست؟
JSON بهتر است یا XML؟
جیسون به دلیل ساختار ساده و کمحجم بودن بیشتر در توسعه وب و API ها مورد استفاده قرار میگیرد، در حالی که XML به دلیل توانایی دادههای پیچیده و قابلیتهای بیشتری مانند پشتیبانی از کامنتها و متادیتا، همچنان در حوزههایی مانند تبادل اطلاعات بین سیستمها کاربرد دارد. در جدول زیر تفاوت این دو فرمت محبوب را میتوانید مشاهده کنید.
ویژگی | JSON | XML |
ساختار | ساده و قابل فهم (Key-Value) | نسبتا پیچیده (ساختار درختی با تگهای تو در تو) |
قابلیت خوانایی | خواناتر برای انسان | ناخوانا بودن به دلیل طولانی بودن تگها |
کامنت | پشتیبانی نمیکند | پشتیبانی میکند |
آرایه | پشتیبانی مستقیم | نیاز به تگهای اضافی برای هر عنصر آرایه |
حجم داده | کمحجم و سبک | معمولا پر حجم |
پشتیبانی از دادههای باینری | ندارد | دارد |
کاربردها | مناسب برای API های وب و دادههای ساده | مناسب برای انتقال دادههای پیچیده و اسناد |
امنیت | ایمنتر (اما در صورت استفاده از JSONP آسیبپذیر در برابر حمله CSRF است) | آسیبپذیر در برابر حملات XEE و DTD |
نوع دادهها | رشته، عدد، بولین، آرایه، آبجکت | پشتیبانی از انواع دادههای پیچیده و چندرسانهای |
استانداردها | ASCII و UTF-8 | UTF-8 و UTF-16 |
سخن آخر
در کل JSON یک فرمت بسیار محبوب و کاربردی برای تبادل داده در توسعه وب است. ساختار ساده و خوانا، حجم کم، سازگاری عالی با زبانهای برنامه نویسی به ویژه جاوا اسکریپت و غیره از ویژگیهای برجسته این فرمت محبوب هستند. همچنین جیسون در مقایسه با سایر فرمتها به دلیل سادگی در مدیریت و خوانایی برای انسان، به یکی از استانداردهای رایج برای انتقال دادهها در اپلیکیشنهای مدرن تبدیل شده است.
منابع:
https://www.json.org/json-en.html/
https://blog.sqlizer.io/posts/json-history/
https://apidog.com/articles/xml-vs-json/
https://www.techgeekbuzz.com/blog/json-vs-xml/
دیدگاهتان را بنویسید