جی سان JSON

جی سان یا JSON چیست؟

جی سان (JSON) نوعی فرمت داده متنی است که در آن از متون قابل خواندن توسط انسان برای نگه داری و انتقال داده ها استفاده می‌شود. واژه JSON خلاصه شده عبارت JavaScript Object Notation به معنای نشانه گذاری اشیاء جاوا اسکریپت می‌باشد.

جی سان را می‌توان یک فرمت متنی ساده و سبک برای نگه داری و انتقال داده ها به صورت سازماندهی شده به شمار آورد که درک محتوای آن برای انسان کار آسانی است و علاوه بر این ماشین ها هم به آسانی قادر به ایجاد کردن و تجزیه آن هستند. در این فرمت، داده ها در قالب مجموعه‌ای از جفت‌های نام – مقدار (معادل با آبجکت، آرایه انجمنی یا جدول درهم سازی در زبان های برنامه نویسی مختلف) و لیستی مرتب از مقادیر (معادل با آرایه ها) سازماندهی می‌شوند.

پیدایش JSON همان‌طور که از نامش انتظار می‌رود به زبان جاوا اسکریپت و اوایل دهه 2000 میلادی بازمی‌گردد. با اینحال به دلیل کارایی بالای این فرمت، اغلب زبان‌های امروزی دارای کدهای لازم برای ایجاد و تجزیه داده ها در قالب JSON هستند. محبوبیت این فرمت نیز مدیون فعالیت‌های داگلاس کراکفورد (Douglas Crockford) می‌باشد.

گفتنی است نوع رسانه (Media Type یا MIME Type) مختص به JSON به صورت application/json می‌باشد و پسوند استاندارد فایل هایی که به منظور نگه داری داده ها در این قالب استفاده می‌شود نیز به شکل .json است.

لوگوی جی سان JSON
لوگوی JSON

داده ها در JSON

همان‌طور که گفته شد در این فرمت داده ها به صورت مجموعه‌ای از جفت‌های نام – مقدار و همچنین آرایه‌ای از مقادیر سازماندهی می‌شوند. به عبارت دقیق‌تر، جی سان از انواع داده های اصلی زیر پشتیبانی می‌کند که امکان استفاده تو در توی آن‌ها نیز وجود دارد:

  • اعداد
  • رشته ها (String): دنباله ای از کاراکترها که در میان “” قرار می‌گیرند.
  • بولین (Boolean): با مقادیر true یا false
  • null: به معنای بدون مقدار
  • آرایه (Array): لیستی مرتب از مقادیر که در میان [] قرار می‌گیرند و با کاما از هم جدا می‌شوند.
  • آبجکت یا شئ (Object): مجموعه‌ای نامرتب از جفت‌های نام (name) و مقدار (value) که در میان {} قرار می‌گیرد و در آن نام ها که به ویژگی (attribute) نیز موسوم هستند به صورت رشته ظاهر می‌شوند. هر نام با نماد : (یا کلن) از مقدار منتسب به خود جدا می‌شود و هر جفت نام و مقدار نیز توسط کاما از یکدیگر جدا می‌شوند.

یک مثال ساده

در تصویر زیر می‌توانید نمونه‌ای از نمایش اطلاعات شخصی یک فرد در قالب JSON را مشاهده کنید:

جی سان JSON
مثالی از نمایش اطلاعات یک شخص در قالب JSON

همان‌طور که در این مثال می‌بینید مجموعه‌ای از جفت‌های نام (یا ویژگی) و مقدار، فرد موردنظر را براساس ویژگی‌هایی مثل اسم کوچک و فامیل، شماره ملی، جنسیت و … توصیف می‌کند. نام ها مثل “firstname” و “lastname” و “nationalID” به شکل رشته آمده‌اند و مقادیر موجود در مثال هم به اشکال مختلفی نظیر رشته (مانند “John” برای “firstname” و “Smith” برای “lastname”)، عدد (مانند 123456789 برای “nationalID” و 27 برای “age”)، مقدار بولین (مانند true برای “married”) و null (برای “job”) ظاهر شده‌اند. مقدار منتسب به phone نیز به صورت یک آرایه شامل تعدادی شماره تماس و نوع آن (مربوط به منزل، موبایل و …) می‌باشد که هرکدام از آن‌ها یک شئ با دو ویژگی type و number همراه مقدار منتسب به آن‌هاست.

کاربردهای جی سان

از JSON به عنوان فرمت رایج برای انتقال داده ها در کاربردهای تحت وب استفاده می‌شود. ایجاد صفحات وب پویا و موقعیت‌های مختلفی که در آن از XML یا فرمت های مشابه کمک گرفته می‌شود می‌تواند گزینه‌های مناسبی برای استفاده از فرمت جی سان باشد. علاوه بر این جی سان به عنوان یک قالب برای فایل های پیکربندی نیز به کار می‌رود.

JSON و JavaScript

از آنجایی که جی سان یک فرمت متنی است گزینه مناسبی برای انتقال داده ها بر بستر یک شبکه می‌باشد. زمانی که داده ها در این فرمت به صورت یک عبارت متنی توسط کلاینت دریافت می‌شود به منظور استفاده ابتدا لازم است تجزیه شود. در اغلب زبان ها علاوه بر قابلیت تبدیل داده ها به این فرمت، امکان تجزیه آن نیز فراهم شده است. برای مثال در زبان جاوا اسکریپت برای تجزیه رشته ای با فرمت جی سان و تبدیل آن به یک آبجکت جاوا اسکریپت از متد JSON.parse() به شکل زیر استفاده می‌شود:

var obj = JSON.parse(json_str);

که در آن json_str رشته ای با فرمت جی سان است. در صورتی که این رشته حاوی همان متن موجود در مثال فوق باشد برای دسترسی به داده های آن می‌توانید از شیوه مرسوم کار با اشیا در زبان جاوا اسکریپت (برای مثال obj.nationalID جهت دسترسی به مقدار شماره ملی) کمک بگیرید.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

وبسایت json.org

امیرحسین شهسواری

عاشق دنیای رایانه و فناوری به خصوص برنامه نویسی هستم؛ یادگرفتن و البته یاد دادن چیزای جالبی که یاد گرفتم باعث خوشحالیم میشه و از اولویت‌های اصلی زندگیم به حساب میاد. از مدیریت و نوشتن در تک دیک هم واقعا لذت می‌برم :)

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *