Codoloper

جیسون یا جیسان چیست - JSON - JavaScript Object Notation

جیسون یا جیسان چیست - JSON - JavaScript Object Notation | عکس

جی‌سان یا JSON (JavaScript Object Notation) یک فرمت تبادل داده سبک (lightweight) می‌باشد که خواندن و نوشتن آن برای انسان و تولید و پارس کردن آن برای ماشین‌ها آسان است.

این زبان بر مبنای یک زیرمجموعه از زبان برنامه‌نویسی JavaScript، استاندارد ECMA-262 ویرایش سوم - دسامبر 1999، است.

JSON به صورت متنی (text) بوده و کاملاً مستقل از زبان به‌کار رفته است، اما از قوانینی استفاده می‌کند که برای برنامه‌نویسان زبان‌های خانواده C (شامل C، C++، Java، JavaScript، Perl، Python، و بسیاری زبان‌های دیگر) آشنا می‌باشد. این خصوصیات JSON را یک زبان تبادل‌داده‌ای ایده‌آل کرده است.


چرا JSON؟

ویژگی‌های JSON آن را به یک فرمت تبادل داده ایده‌آل تبدیل می‌کنند:

  • متن‌باز و سبک: صدور و مصرف آن کم‌حجم است و لزوماً به کتابخانه‌های سنگین نیاز ندارد.
  • قابل خواندن توسط انسان: نگارش آن ساده و نزدیک به ساختارهای برنامه‌نویسی معمول است.
  • قابل پارس شدن توسط ماشین: انواع داده‌ای ساده و قواعد مشخصی دارد که پیاده‌سازی parser را آسان می‌کند.
  • مستقل از زبان: پشتیبانی توسط زبان‌های متعددی دارد و انتقال داده بین محیط‌های گوناگون را آسان می‌سازد.

ساختارها و نوع‌های داده در JSON

JSON بر مبنای دو ساختار داده‌ای اصلی ساخته شده است:

  • یک مجموعه از زوج‌های نام/ارزش (name/value). در زبان‌های گوناگون این ساختار یک شیء (object)، ساختار (struct)، دیکشنری (dictionary)، جدول مخلوط (hash table)، لیست کلیددار (keyed list) یا آرایه انجمنی (associative array) شناخته می‌شود.
  • یک لیست منظم از ارزش‌ها. در بسیاری از زبان‌ها این ساختار یک آرایه (array)، بردار (vector)، لیست (list)، یا دنباله (sequence) شناخته می‌شود.

در JSON از فرم‌های زیر استفاده می‌شود:

۱. شیء (object)

یک مجموعه نامنظم از زوج‌های نام/ارزش که با { } در برگرفته شده‌اند. در انتهای هر نام یک : (دو نقطه) قرار می‌گیرد و زوج‌های نام/ارزش با , (ویرگول) جدا می‌شوند.

{
  "name": "Ali",
  "age": 30,
  "married": true
}

۲. آرایه (array)

یک فهرست مرتب از مقادیر که بین [ ] قرار گرفته‌اند.

["apple", "banana", "cherry"]

نوع‌های داده در JSON

یک ارزش (value) در JSON می‌تواند یکی از موارد زیر باشد:

  • رشته (string): متنی بین "..." با یونیکد و پشتیبانی escape.
  • عدد (number): مشابه C یا Java، فقط به شکل اعشاری.
  • بولین (boolean): true یا false.
  • تهی (null): نشان‌دهنده نبود مقدار.
  • شیء یا آرایه: می‌توانند به‌صورت تو در تو باشند.

فضای خالی (whitespace) بین نشانه‌ها مجاز است و تأثیری بر ساختار ندارد.


قواعد نگارش و سینتکس (Syntax)

یک object با { (آکولاد باز) شروع، و با } (آکولاد بسته) تمام می‌شود. در انتهای هر نام یک : (دو نقطه) قرار می‌گیرد و زوج‌های نام/ارزش با , (ویرگول) جدا می‌شوند.

{ "a": 1, "b": 2 }

یک array با [ (براکت باز) شروع، و با ] (براکت بسته) تمام می‌شود. ارزش‌ها توسط , (ویرگول) از هم جدا می‌شوند.

[1, "two", null]

مثال‌های واقعی از JSON

مثال ۱

{
  "glossary": {
    "title": "example glossary",
    "GlossDiv": {
      "title": "S",
      "GlossList": {
        "GlossEntry": {
          "ID": "SGML",
          "GlossDef": {
            "para": "A metamarkup language...",
            "GlossSeeAlso": ["GML", "XML"]
          },
          "GlossSee": "markup"
        }
      }
    }
  }
}

مثال ۲

{
  "menu": {
    "id": "file",
    "value": "File",
    "popup": {
      "menuitem": [
        { "value": "New", "onclick": "CreateNewDoc()" },
        { "value": "Open", "onclick": "OpenDoc()" },
        { "value": "Close", "onclick": "CloseDoc()" }
      ]
    }
  }
}

مزایا و محدودیت‌ها

مزایا

  • خوانایی بالا و شباهت زیاد به دیکشنری در زبان‌های ساخت‌یافته.
  • پشتیبانی گسترده در REST API، Ajax و ذخیره‌سازی مرورگر.
  • تبادل داده سریع و سبک بین سرویس‌ها.

محدودیت‌ها

  • عدم پشتیبانی از کامنت، برخلاف JSON5 یا YAML.
  • قابلیت ذخیره فقط داده خام، نه کد یا تاریخچه.
  • مسائل امنیتی هنگام استفاده نادرست از eval() در JavaScript (باید از JSON.parse() استفاده شود).

نحوه استفاده در توسعه نرم‌افزار

  • خواندن (parse): تبدیل متن JSON به ساختار داده‌ای زبان مقصد (مثلاً json.loads() در Python).
  • نوشتن (serialize): تبدیل داده ساختارمند به متن JSON (مثلاً JSON.stringify() در JavaScript).
  • ارسال و دریافت از API‌ها: اغلب API‌های REST از JSON استفاده می‌کنند؛ معمولاً همراه با Content-Type: application/json.
کامنت جدید

برای ثبت کامنت وارد شوید

برای اینکه بتوانید زیر این پست کامنت بگذارید، باید وارد حساب کاربری خود شوید.

برای ادامه، وارد حساب خود شوید

بعد از ورود، دوباره به همین پست برمی‌گردید و می‌توانید کامنتتان را ثبت کنید.

ورود به حساب
کامنت‌ها

نظرات کاربران

دیدگاه‌هایی که برای این نوشته ثبت شده‌اند.

هنوز کامنتی برای این پست ثبت نشده است.