کدلپر - مرجع جامع آموزش برنامه‌نویسی

All Right Reserved © 2025 Codoloper

معرفی جیسون - json چیست

 معرفی 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 
بر مبنای دو ساختار داده‌ای اصلی ساخته شده است:

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

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

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

مثال:

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

 

2.    آرایه (array) : یک فهرست مرتب از مقادیر که بین [ ] قرار گرفته‌اند.

مثال:

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

 

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


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

رشته: (string)   متنی بین "..." با یونیکد و پشتیبانی escape.

عدد : (number) مشابه C یا Java ، فقط به شکل اعشاری.

بولین true : (boolean) یا false .

تهی : (null) نشان‌دهنده نبود مقدار.

شیء یا آرایه: می‌توانند به‌صورت تو در تو باشند.

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

 

 

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

 

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


مثال:

{
 "a": 1,
 "b": 2
}
  • يك array با [  (براكت باز) شروع، و با ]  (براكت بسته) تمام مي‌شود. ارزش‌ها توسط ,  (ويرگول) از هم جدا مي‌شوند.


مثال:

[1, "two", null]

 

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

 

1.    مثال:

{
  "glossary": {

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

2.    مثال :

{
  "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() در Pyhon).
  • نوشتن : (serialize) تبدیل داده ساختارمند به متن) JSON مثلاً  JSON.stringify() در JavaScript).
  • ارسال و دریافت از APIها : اغلب APIهای REST از JSON استفاده می‌کنند؛ معمولاً همراه با. Content-Type: application/json

برامون کامنت بزار