JSON Toolkit

JSON در برابر JSON5 در برابر JSONC

جمع‌بندی: ابرمجموعه‌های سخت‌گیر به ترتیب: JSONC کامنت اضافه می‌کند؛ JSON5 تک‌گیومه، کلید بی‌گیومه، ویرگول انتهایی و عدد هگز اضافه می‌کند. انتخاب اشتباه API را می‌شکند، نه ویرایشگر را.

مقدماتیحدود 4 دقیقه مطالعهانتشار 2026-10-30به‌روزرسانی 2026-10-30
مقایسه ویژگی‌های JSON، JSON5 و JSONC

جمع‌بندی: هر جا داده از مرز سیستم عبور می‌کند از JSON استاندارد استفاده کنید، و JSONC را فقط برای پیکربندی محلی‌ای که انسان ویرایش می‌کند؛ وقتی تک‌گیومه، ویرگول انتهایی یا کلید بی‌گیومه می‌خواهید به JSON5 بروید، اما اول تأیید کنید بارگذار پشتیبانی می‌کند.

در یک خط: JSONC یعنی JSON به‌علاوه کامنت؛ JSON5 یعنی JSON به‌علاوه عادت‌های جاوااسکریپت.

ماتریس ویژگی‌ها

ویژگی JSON JSONC JSON5
رشته‌های گیومه دوتایی ✅ ✅ ✅
رشته‌های تک‌گیومه ❌ ❌ ✅
کلیدهای بی‌گیومه ❌ ❌ ✅
کامنت خطی // ❌ ✅ ✅
کامنت بلوکی /* */ ❌ ✅ ✅
ویرگول انتهایی ❌ ❌ ✅
عدد هگز 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
رشته چندخطی ❌ ❌ ✅
خوانا برای پارسرهای استاندارد ✅ ❌ ❌

توجه کنید JSONC فقط کامنت را حل می‌کند. بسیاری فرض می‌کنند «JSONی که کامنت مجاز می‌داند» ویرگول انتهایی را هم مجاز می‌داند؛ tsconfig.json همچنان روی آن شکست می‌خورد.

هر کدام برای چیست

JSON — تبادل. APIها، صف‌ها، ستون‌های JSON پایگاه‌داده، لاگ‌ها. هر چیزی ماشین-به-ماشین.

JSONC — پیکربندی ویرایشگر. VS Code خودش این فایل‌ها را تجزیه می‌کند، پس JSON.parse هرگز آن‌ها را نمی‌بیند. RFC‌ای وجود ندارد؛ قراردادی عملی به رهبری مایکروسافت است.

JSON5 — ابرمجموعه‌ای سهل‌گیر برای انسان. هدف «پیکربندی‌ای بود که شبیه object literal جاوااسکریپت باشد». مناسب‌ترین برای فایل‌های .json5 که ابزارهای ساخت بارگذاری می‌کنند؛ گسترده‌ترین نحو و باریک‌ترین پشتیبانی ابزار.

انتخاب

موقعیت انتخاب
بدنه درخواست یا پاسخ JSON، بدون جایگزین
ستون‌های JSON در MySQL / PostgreSQL JSON، توابعشان چیز دیگری نمی‌پذیرند
پیکربندی پروژه که توضیح لازم دارد JSONC اگر پشتیبانی شود، وگرنه YAML
سهل‌گیری به سبک JS می‌خواهید JSON5، پس از تأیید پشتیبانی بارگذار
افراد غیرمهندس ویرایشش می‌کنند YAML، تورفتگی بر آکولاد برنده است

یک تله آسان

تجزیه فایل JSONC به‌عنوان JSON سخت‌گیر خطایی تولید می‌کند که به کامنت اشاره می‌کند:

SyntaxError: Unexpected token / in JSON at position 42

پیش از حذف کامنت، بررسی کنید آیا فایل قرار است JSONC باشد. حذفش کنید و ممکن است دو خط بعدتر همچنان به ویرگول انتهایی بخورید.

پرسش‌های متداول

چگونه بین JSONC و JSON5 انتخاب کنم؟

وقتی کامنت تنها چیزی است که می‌خواهید از JSONC استفاده کنید: // و /* */ را روی JSON اضافه می‌کند و settings.json و tsconfig.json در VS Code از آن استفاده می‌کنند. وقتی تک‌گیومه، کلید بی‌گیومه، ویرگول انتهایی، عدد هگز یا رشته چندخطی هم می‌خواهید از JSON5. هر دو به بارگذار بستگی دارند، پس تأیید کنید ابزاری که فایل را می‌خواند پشتیبانی می‌کند.

چرا فایل JSONC به‌عنوان JSON استاندارد خوانده نمی‌شود؟

JSONC قراردادی عملی است، نه RFC مستقل، پس پارسرهای استاندارد کامنت را رد می‌کنند. JSON.parse روی چنین فایلی Unexpected token / می‌اندازد که به کامنت اشاره می‌کند نه داده. فقط پیکربندی‌ای که ویرایشگر یا پارسر اختصاصی می‌خواند باید JSONC نوشته شود.

آیا باید فایل JSON5 به API بفرستم؟

نه. APIها، ستون‌های JSON پایگاه‌داده و صف‌ها JSON سخت‌گیر تجزیه می‌کنند، پس تک‌گیومه، کلید بی‌گیومه و ویرگول انتهایی JSON5 رد می‌شوند. JSON5 برای پیکربندی محلی‌ای است که انسان ویرایش می‌کند؛ پیش از عبور از مرز سیستم به JSON استاندارد تبدیلش کنید.

مطالعه بیشتر

ابزارهای مرتبط

مقالات مرتبط

JSON5 و JSONC: JSON با کامنت

هر دو گویش وجود دارند چون پیکربندی دست‌نویس انسان به کامنت و ویرگول انتهایی نیاز دارد، اما نحو و دامنه اکوسیستمشان متفاوت است، پس انتخاب اشتباه زنجیره ابزارتان را قفل می‌کند.

مقدماتیحدود 10 دقیقه مطالعهبه‌روزرسانی 2026-10-30

مدیریت JSON برای پیکربندی، fixture و داده محلی

پیکربندی باید لایه‌بندی و اعتبارسنجی شود؛ fixture باید قطعی، خوانا و قابل diff باشد. اگر این دو نوع فایل بد مدیریت شوند، هزینه عیب‌یابی مدت طولانی بالا می‌ماند.

مقدماتیحدود 10 دقیقه مطالعهبه‌روزرسانی 2026-10-30

پرسش‌های متداول ابزار: داده، فایل و خروجی

آیا داده آپلود می‌شود، چه حجم فایلی کار می‌کند، چیزی محلی ذخیره می‌شود، چرا چینی به escape تبدیل می‌شود: ده پرسش که مرزهای واقعی یک ابزار آنلاین JSON را روشن می‌کند.

مقدماتیحدود 10 دقیقه مطالعهبه‌روزرسانی 2026-10-30