معرفی جیسون - 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 بر مبنای دو ساختار دادهای اصلی ساخته شده است:
- يك مجموعه از زوجهاي نام/ارزش .(name/value) در زبانهاي گوناگون اين ساختار يك شيء (object) ، ساختار (struct) ، ديكشنري (dictionary) ، جدول مخلوط (hash table) ، ليست كليددار (keyed list) يا آرايه انجمني (associative array) شناخته ميشود.
- يك ليست منظم از ارزشها. در بسياري از زبانها اين ساختار يك آرايه ( 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