جیسون (JSON) چیست؟ ساختار، قواعد و کاربردهای واقعی
جیسون قالبی برای نوشتن داده است که هم آدم میخواندش هم برنامه. اینجا ساختارش را خطبهخط باز میکنیم، شش نوع دادهاش را میبینیم، و پنج خطایی را که همه اول کار میگیرند مرور میکنیم.
اگر تا حالا خروجی یک API را دیدهاید، یا فایل package.json را باز کردهاید، یا در n8n روی یک گره کلیک کردهاید — جیسون دیدهاید. حتی اگر اسمش را ندانید.
خبر خوب: جیسون زبان برنامهنویسی نیست. قاعدهای برای نوشتن داده است، و کل قواعدش در یک بعدازظهر یاد گرفته میشود.
مسئلهای که جیسون حل کرد
فرض کنید میخواهید مشخصات یک مشتری را از یک برنامه به برنامهی دیگری بفرستید. یکی به پایتون نوشته شده، دیگری به پیاچپی. این دو هیچ چیز مشترکی ندارند.
راهحل این است که داده را به متن ساده تبدیل کنید — متنی که هر دو طرف بتوانند بخوانند. جیسون همان قرارداد مشترک است: چطور یک متن ساده بنویسیم که هم آدم بفهمدش، هم ماشین بدون ابهام تفسیرش کند.
پیش از آن، XML این کار را میکرد. این قالب جایش را گرفت چون کوتاهتر و خواناتر بود. مقایسه کنید:
<user><name>سارا</name><age>27</age></user>
{"name": "سارا", "age": 27}
ساختار داده در جیسون: شش نوع، تمام

این قالب فقط دو نوع «ظرف» دارد و چهار نوع «مقدار». همین.
دو ظرف
شیء با آکولاد { } نوشته میشود و مجموعهای از جفتهای «کلید و مقدار» است. مثل یک فرم پرشده: هر خانه یک اسم دارد و یک محتوا.
{ "city": "سقز", "code": 664 }
آرایه با براکت [ ] نوشته میشود و فهرستی مرتب است. مثل یک لیست خرید: ترتیب دارد، اسم ندارد.
["قرمز", "آبی", "سبز"]
و این دو داخل هم میروند. آرایهای از شیءها، یا شیئی که یکی از مقادیرش آرایه است — همان چیزی که در خروجی هر API واقعی میبینید.
چهار مقدار
- رشته — هر متنی، همیشه داخل گیومهی دوتایی:
"سلام" - عدد — بدون گیومه:
27یا3.14یا-5 - بولی — فقط
trueیاfalse، همیشه با حروف کوچک - تهی —
null، یعنی «اینجا مقداری وجود ندارد»
دقت کنید که null با رشتهی خالی "" یکی نیست. اولی میگوید «شمارهای ثبت نشده»، دومی میگوید «شماره ثبت شده و خالی است». در پایگاه داده این تفاوت خودش را نشان میدهد.
پنج خطایی که همه یک بار میگیرند
این قالب سختگیر است. یک کاراکتر اشتباه و کل فایل رد میشود.
۱. کاما در آخرین عضو. این خطاست:
{ "a": 1, "b": 2, } ← کامای آخر مجاز نیست
در جاوااسکریپت اجازه دارید؛ در جیسون نه. رایجترین خطای همه.
۲. گیومهی تکی. 'name' اینجا بیمعناست. فقط گیومهی دوتایی.
۳. کلید بدون گیومه. {name: "سارا"} در جاوااسکریپت درست است، اینجا نه. کلید هم باید داخل گیومه باشد.
۴. عدد داخل گیومه. "age": "27" رشته است نه عدد. بعداً وقتی بخواهید جمعش بزنید، بهجای ۵۴ میگیرید ۲۷۲۷.
۵. توضیح. جیسون // ندارد. اگر لازم دارید، یک کلید به اسم _note اضافه کنید و توضیح را آنجا بنویسید.
کجا به کارتان میآید

مهمترینشان برای کسی که اتوماسیون کار میکند، مورد چهارم است. در n8n هر گره خروجیاش را به شکل جیسون به گره بعدی میدهد. وقتی مینویسید {{ $json.message.chat.id }}، دارید در همان ساختار مسیریابی میکنید.
و اینجا نکتهای هست که کار را ساده میکند: خواندن جیسون یعنی دنبال کردن یک مسیر.
{
"order": {
"customer": { "name": "رضا" },
"items": [ { "title": "کیبورد" } ]
}
}
برای رسیدن به «رضا» مینویسید order.customer.name — از بیرون به داخل، با نقطه. برای رسیدن به «کیبورد» مینویسید order.items[0].title، چون items آرایه است و شمارهگذاری از صفر شروع میشود.
همین. هر چقدر هم ساختار عمیق شود، قاعده تغییر نمیکند.
چطور تمرین کنید
یک فایل جیسون واقعی باز کنید و سعی کنید بدون اجرا کردن چیزی، مسیر یک مقدار مشخص را بنویسید. اگر n8n دارید، سادهترین راه این است که در یک گره Code بنویسید return [{json: {test: 1}}] و ببینید خروجی چه شکلی میشود.
مرحلهی بعد این است که بتوانید همان ساختار را دستکاری کنید — و آنجا جاوااسکریپت لازم میشود. در مقدمات جاوااسکریپت، بخش اول از همانجا شروع میکنیم.