JSON چیست؟ راهنمای ساده با مثال
JSON (JavaScript Object Notation) یک قالب متنی ساده برای نوشتن داده ساختارمند است، مثل یک مشتری، یک سفارش یا فهرست محصولات، بهصورت نامهایی که به مقدار وصل شدهاند. خواندنش برای انسان آسان است و برای برنامهها تولید و تجزیهاش راحت. وقتی اپها و سرویسها روی وب داده رد و بدل میکنند، JSON با فاصله رایجترین قالب است.
چرا JSON وقتی با هوش مصنوعی میسازید مهم است
حتی اگر هرگز کد ننویسید، مدام با JSON روبهرو میشوید:
- APIها. وقتی صفحههای اپ داده را از بکاند میگیرند، یا بکاند شما یک سرویس پرداخت، ایمیل یا هوش مصنوعی را صدا میزند، داده معمولاً بهصورت JSON جابهجا میشود. ببینید API چیست.
- فایلهای تنظیمات. بسیاری از فایلهای پیکربندی پروژه JSON هستند؛ مثلاً
package.jsonکه وابستگیهای یک پروژه JavaScript را فهرست میکند. - پایگاه داده. Postgres میتواند JSON را در یک ستون (نوع
jsonb) ذخیره کند، برای دادههایی که در سطر و ستون مرتب جا نمیشوند. ببینید Postgres چیست. - خروجی هوش مصنوعی. وقتی میخواهید یک مدل هوش مصنوعی چیزی برگرداند که برنامه بتواند از آن استفاده کند، مثل فهرست برچسبها یا فیلدهای استخراجشده از فاکتور، معمولاً JSON درخواست میکنید.
- پیامهای خطا و لاگها. بسیاری از خطاها بهصورت JSON میرسند و خواندنشان اغلب سریعترین راه برای فهمیدن مشکل است.
خواندن JSON به شما امکان میدهد ببینید اپ واقعاً چه دادهای دریافت کرده، فیلد جاافتاده را پیدا کنید و مشکل را دقیق برای ابزار ساختتان توضیح دهید.
یک مثال روزمره
به یک فرم کاغذی فکر کنید: نام: ____، تلفن: ____، خبرنامه: ☐ بله ☐ خیر. هر ورودی یک برچسب است که کنارش یک مقدار نوشته شده. JSON همان فرم است که بهصورت متن و در یک چیدمان سختگیرانه نوشته شده تا کامپیوتر بدون حدس زدن بخواندش. و مثل فرمها، JSON میتواند بخشهایی داخل بخشها داشته باشد (یک بلوک آدرس با خیابان، شهر و کد پستی) و فهرستها (چند شماره تلفن).
JSON چه شکلی است
این یک رزرو در JSON است:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["beard trim", "hot towel"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
خواندنش:
- آکولادهای
{ }یک شیء را دربرمیگیرند؛ مجموعهای از جفتهای نام و مقدار. - هر جفت به شکل
"name": valueاست و با ویرگول از هم جدا میشوند. - براکتهای
[ ]یک آرایه را دربرمیگیرند؛ فهرستی مرتب. - شیءها و آرایهها میتوانند داخل هم قرار بگیرند، مثل
contactوextras.
شش نوع مقدار
JSON فقط شش نوع مقدار دارد. همین فهرست کوتاه بخش بزرگی از دلیل کار کردنش در همه جاست.
| نوع | مثال | توضیح |
|---|---|---|
| رشته (متن) | "Lena Park" | همیشه با نقل قول دوتایی |
| عدد | 35.5، -2، 1e6 | بدون نقل قول؛ بدون نماد ارز |
| بولین | true، false | حروف کوچک، بدون نقل قول |
| null | null | «بدون مقدار» |
| شیء | { "city": "Leeds" } | مقادیر نامدار |
| آرایه | [1, 2, 3] | فهرست مرتب؛ آیتمها میتوانند هر نوعی باشند |
نوع تاریخ وجود ندارد. تاریخها بهصورت رشته نوشته میشوند، معمولاً در قالب ISO 8601 که بالاتر دیدید (2026-10-03T14:00:00Z، که Z یعنی UTC). توافق روی این قالب از یک دسته کامل باگهای منطقه زمانی جلوگیری میکند.
قواعد سختگیرانه (خطاها از اینجا میآیند)
JSON از آنچه به نظر میرسد سختگیرتر است. همه اینها نامعتبرند:
{ name: "Lena" } ← کلید بدون نقل قول دوتایی
{ 'name': 'Lena' } ← نقل قول تکی
{ "a": 1, "b": 2, } ← ویرگول اضافی
{ "a": 1 "b": 2 } ← ویرگول جاافتاده
{ "a": 1 // comment } ← کامنت مجاز نیست
بیشتر خطاهای «Unexpected token» که میبینید یکی از اینهاست. یک اعتبارساز یا فرمتکننده JSON خط دقیق را نشان میدهد.
یک مثال کامل: JSON در مسیر یک اپ
یک مشتری در یک اپ آرایشگاه نوبت یک اصلاح مو رزرو میکند. اینجاست که JSON ظاهر میشود:
- فرم رزرو این را به بکاند اپ میفرستد:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- بکاند رزرو را در پایگاه داده ذخیره میکند و با وضعیت
201 Createdو این پاسخ جواب میدهد:
{ "id": 5001, "status": "confirmed" }
- اگر آن زمان قبلاً گرفته شده بود، ممکن است با وضعیت
409 Conflictو این پاسخ جواب دهد:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }
صفحه فیلد status یا error را میخواند و پیام درست را نشان میدهد. اگر به جای آن صفحه خالی نشان داده میشد، باز کردن ابزارهای توسعهدهنده مرورگر (تب Network) همین JSON را نشانتان میداد، که اغلب سریعترین سرنخ برای فهمیدن مشکل است.
اصطلاحات کلیدی
| اصطلاح | معنی |
|---|---|
| Key (کلید) | نام در یک جفت نام و مقدار، مثل "email". |
| Parse (تجزیه) | تبدیل متن JSON به دادهای که برنامه بتواند استفاده کند. |
| Serialize / stringify | تبدیل داده به متن JSON برای ارسال یا ذخیره. |
| Payload | دادهای که در یک درخواست یا پاسخ فرستاده میشود. |
| Schema (طرح) | توصیف شکلی که داده باید داشته باشد: کدام فیلدها و از چه نوعی. JSON Schema یک روش استاندارد برای نوشتن آن است. |
| JSONB | نوع ستون JSON باینری در Postgres که میتواند ایندکس و جستجو شود. |
| NDJSON / JSON Lines | یک شیء JSON در هر خط، رایج در لاگها و دادههای استریمی. |
تصورات غلط رایج
- «JSON همان JavaScript است.» از نحو JavaScript آمده، اما مستقل از زبان است؛ Python، Java، C#، Go و بقیه همه آن را میخوانند.
- «عددهای داخل نقل قول اشکالی ندارند.»
"35"یک رشته است، نه عدد. ترکیب آنها باعث باگ میشود، مثلاً"35" + "5"میشود"355". پول اغلب بهتر است بهصورت سنت صحیح (3550) ذخیره شود تا مشکلات گرد کردن پیش نیاید. - «JSON امن است چون فقط داده است.» JSON میتواند هر چیزی از جمله رمز را حمل کند. کلید API را در JSONای که به مرورگر فرستاده میشود نگذارید.
- «همه چیز را در یک ستون JSON بریزید.» برای فیلدهای انعطافپذیر اضافی خوب است، اما دادهای که قرار است جستجو، فیلتر یا join شود معمولاً باید در ستونهای واقعی باشد.
- «هوش مصنوعی همیشه JSON معتبر برمیگرداند.» مدلها ممکن است متن اضافه کنند یا قالب را خراب کنند. بسیاری از ارائهدهندگان حالت خروجی ساختارمند دارند، اما کد شما باید باز هم آنچه برمیگردد را بررسی کند.
از ابزار ساخت با هوش مصنوعیتان چه بخواهید
- «نمونه JSONی که این endpoint برمیگرداند را نشانم بده.»
- «خطاها را بهصورت JSON با یک کد
errorو یکmessageقابل خواندن برای انسان برگردان.» - «تاریخها را بهصورت رشته ISO 8601 در UTC ذخیره کن و فقط روی صفحه به وقت محلی تبدیل کن.»
- «قیمتها را بهصورت سنت صحیح ذخیره کن.»
- «JSON ورودی را در سرور اعتبارسنجی کن و درخواستهایی با فیلد جاافتاده یا نوع اشتباه را رد کن.»
- «وقتی مدل هوش مصنوعی را صدا میزنی، JSON را با این شکل دقیق درخواست کن و قبل از استفاده بررسیاش کن.»
JSON در Mythex
لازم نیست در Mythex JSON را دستی بنویسید؛ آنچه میخواهید را توصیف میکنید و عامل کدی مینویسد که آن را ارسال و دریافت میکند. با این حال شناختن آن کمک میکند: وقتی چیزی خراب میشود، چسباندن خطای JSON در چت سرنخ دقیقی به عامل میدهد. دستور REST API backend در مستندات از همان ابتدا «خطاهای JSON واضح» را درخواست میکند، و دستور integrate any API به فراخوانی سرویسهای بیرونی میپردازد. برای تصویر بزرگتر، ببینید REST در برابر GraphQL و چطور یک اپ ساختهشده با هوش مصنوعی را دیباگ کنیم.
پرسشها
JSON به زبان ساده چیست؟
JSON (JavaScript Object Notation) یک قالب متنی ساده برای نوشتن داده ساختارمند بهصورت نام و مقدار است، مثل "name": "Lena". تقریباً همه APIهای وب از آن برای رد و بدل داده استفاده میکنند و بسیاری از اپها هم از آن برای تنظیمات و دادههای ذخیرهشده بهره میبرند.
آیا JSON یک زبان برنامهنویسی است؟
نه. JSON یک قالب داده است، نه زبان برنامهنویسی. بهتنهایی کاری انجام نمیدهد و فقط داده را توصیف میکند. اگرچه از JavaScript آمده، تقریباً همه زبانهای برنامهنویسی میتوانند آن را بخوانند و بنویسند.
تفاوت JSON و شیء JavaScript چیست؟
شبیه هم به نظر میرسند، اما JSON سختگیرانهتر است. در JSON همه کلیدها باید در نقل قول دوتایی باشند، رشتهها هم با نقل قول دوتایی نوشته میشوند، کامنت وجود ندارد، ویرگول اضافی انتهایی مجاز نیست و مقادیر فقط رشته، عدد، true، false، null، شیء و آرایه هستند.
چرا JSON من نامعتبر اعلام میشود؟
دلایل معمول: ویرگول اضافی بعد از آخرین آیتم، نقل قول تکی بهجای دوتایی، ویرگول جا افتاده بین آیتمها، براکت بستهنشده، یا کامنت. آن را در یک اعتبارسنج JSON بچسبانید تا خط دقیق خطا را نشان دهد.