ابزار رایگان · بدون ثبت‌نام

فقط در مرورگر شما؛ چیزی ارسال نمی‌شود

فرمت و اعتبارسنجی JSON آنلاین

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

نوع خروجی
تورفتگی

نتیجه همزمان با تایپ؛ Esc ورودی را پاک می‌کند.

ورودی بزرگ‌تر از ۵ مگابایت است؛ برای روان ماندن صفحه، پردازش خودکار خاموش شد.

یک JSON بچسبانید یا «نمونهٔ JSON» را بزنید؛ وضعیت اعتبار و آمار همین‌جا نمایش داده می‌شود.

راهنمای کامل

راهنمای کامل JSON: ساختار، اعتبارسنجی و رفع خطاهای رایج

JSON زبان مشترک APIها، فایل‌های تنظیمات و بسیاری از دیتابیس‌های امروزی است. وقتی پاسخ یک API در یک خط طولانی برمی‌گردد یا اپلیکیشن با پیام «Unexpected token» متوقف می‌شود، اولین کار این است که JSON را خوانا کنید و ببینید کجای آن ایراد دارد. در این راهنما توضیح می‌دهیم فرمت‌کنندهٔ JSON ایران‌کلاد دقیقاً چه می‌کند، خطاهای رایج کدام‌اند، چه محدودیت‌هایی باید بدانید و همین کارها را با دستورهای لینوکس چطور انجام دهید.

۱۰ بخش حدود ۸ دقیقه مطالعه

فهرست مطالب

JSON چیست و چرا باید آن را فرمت کرد؟

JSON قالبی متنی برای نمایش داده است که از دو ساختار اصلی ساخته می‌شود: شیء که مجموعه‌ای از جفت‌های کلید و مقدار بین آکولاد است و آرایه که فهرستی مرتب بین کروشه است. مقدارها می‌توانند رشته، عدد، true و false‏، null یا باز هم شیء و آرایه باشند. همین سادگی باعث شده تقریباً همهٔ زبان‌های برنامه‌نویسی بدون کتابخانهٔ اضافه آن را بخوانند.

سرورها معمولاً JSON را بدون فاصله و خط جدید می‌فرستند تا حجم کمتری داشته باشد. این برای ماشین عالی است، اما خواندن یک پاسخ چندهزارکاراکتری در یک خط برای انسان تقریباً ناممکن است. زیباسازی یعنی اضافه کردن تورفتگی و خط جدید بدون تغییر در خود داده، و کوچک‌سازی عکس آن است.

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

روش استفاده از فرمت‌کنندهٔ JSON

JSON را در کادر ورودی جای‌گذاری کنید؛ نیازی به زدن دکمه نیست و نتیجه همزمان با تایپ در کادر خروجی ظاهر می‌شود. در حالت «زیباسازی» تورفتگی دو فاصله، چهار فاصله یا Tab را انتخاب کنید. حالت «کوچک‌سازی» همهٔ فاصله‌ها و خط‌های اضافه را حذف می‌کند تا JSON برای ارسال در درخواست، ذخیره در متغیر محیطی یا قرار دادن در فایل تنظیمات آماده شود. با دکمهٔ «کپی خروجی» نتیجه را برمی‌دارید و «خروجی را ورودی کن» آن را برای ویرایش بعدی به کادر ورودی برمی‌گرداند؛ کلید Esc هم ورودی را پاک می‌کند.

بعد از هر پردازش موفق، یک پنل آمار ظاهر می‌شود: حجم ورودی و خروجی به بایت UTF-8، درصد کوچک‌تر یا بزرگ‌تر شدن، تعداد کل گره‌ها، بیشترین عمق تودرتو و تفکیک گره‌ها به شیء، آرایه، رشته، عدد، بولی و null. این آمار برای فهمیدن سریع ساختار یک پاسخ ناشناخته مفید است؛ مثلاً اینکه یک API واقعاً چند رکورد برگردانده یا چرا حجم پاسخ این‌قدر زیاد است.

اگر JSON نامعتبر باشد، کادر قرمز خطا شمارهٔ خط و ستون، دلیل خطا به فارسی و همان خط از متن را با علامت ^ زیر نویسهٔ مشکل‌دار نشان می‌دهد. این موقعیت را خود ابزار با یک بررسی‌کنندهٔ دقیق JSON پیدا می‌کند، نه از روی پیام خطای مرورگر؛ پس در همهٔ مرورگرها یکسان است. برای ورودی‌های بزرگ‌تر از پنج مگابایت پردازش خودکار خاموش می‌شود و با دکمهٔ «اجرا» انجام می‌شود تا صفحه هنگام تایپ کند نشود.

بازگشت به فهرست مطالب

رایج‌ترین خطاهای JSON و راه رفع آن‌ها

بیشتر JSON‌های نامعتبر از چند اشتباه تکراری ناشی می‌شوند، معمولاً وقتی JSON با دست نوشته شده یا از کد جاوااسکریپت کپی شده است. جدول زیر را با پیام خطا مقایسه کنید:

خطانمونهٔ نادرستشکل درست
کاما بعد از آخرین عضو{"a": 1,}{"a": 1}
کوتیشن تکی به‌جای دوتایی{'a': 1}{"a": 1}
کلید بدون کوتیشن{a: 1}{"a": 1}
توضیح در فایل{"a": 1 // comment}JSON توضیح ندارد؛ حذف کنید
مقدارهای خاص جاوااسکریپت{"a": undefined}{"a": null}
صفر ابتدای عدد{"code": 0123}{"code": "0123"}
خط جدید خام داخل رشتهشکستن رشته با Enterاستفاده از \n

اگر JSON را از ترمینال یا ایمیل کپی کرده‌اید و خطای عجیبی در ستون اول می‌بینید، احتمالاً یک کاراکتر نامرئی مثل BOM یا کوتیشن هوشمند ویرایشگر متن وارد شده است. متن را دوباره از منبع اصلی کپی کنید.

بازگشت به فهرست مطالب

آیا JSON من به سرور ارسال می‌شود؟

خیر. صفحهٔ ابزار یک بار از سرور ایران‌کلاد بارگذاری می‌شود و بعد از آن زیباسازی، کوچک‌سازی و اعتبارسنجی با توابع داخلی JSON مرورگر انجام می‌شود. کد این ابزار هیچ درخواست شبکه‌ای نمی‌فرستد و ورودی را در کوکی یا حافظهٔ مرورگر ذخیره نمی‌کند. سمت سرور هم مسیر این صفحه فقط قالب خالی را تحویل می‌دهد و فرمی برای دریافت داده ندارد.

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

برای اطمینان کامل، می‌توانید ابزار توسعه‌دهندهٔ مرورگر را باز کنید و در زبانهٔ Network ببینید که هنگام تایپ، زیباسازی و کوچک‌سازی هیچ درخواستی ارسال نمی‌شود. حتی اگر پس از بارگذاری صفحه اینترنت را قطع کنید، ابزار همچنان کار می‌کند؛ نشانهٔ روشنی که پردازش فقط روی دستگاه خودتان انجام می‌شود.

بازگشت به فهرست مطالب

محدودیت‌های فنی که باید بدانید

این ابزار از JSON.parse مرورگر استفاده می‌کند و به همین دلیل چند رفتار جاوااسکریپت را به ارث می‌برد. مهم‌ترین آن‌ها اعداد صحیح بسیار بزرگ است: عددی بزرگ‌تر از ۹٬۰۰۷٬۱۹۹٬۲۵۴٬۷۴۰٬۹۹۱ با دقت کامل نگه داشته نمی‌شود و بعد از فرمت شدن ممکن است رقم‌های آخرش عوض شود. اگر شناسه‌های بزرگ عددی دارید، مثل شناسه‌های برخی شبکه‌های اجتماعی، خروجی را برای استفادهٔ دوباره به کار نبرید.

دو رفتار دیگر هم قابل توجه است. اگر یک کلید دو بار در یک شیء آمده باشد، فقط مقدار آخر باقی می‌ماند؛ ابزار در این حالت هشدار زرد با نام کلید و شمارهٔ خط و ستون نشان می‌دهد تا داده بی‌صدا گم نشود. همین هشدار برای اعداد صحیح بزرگ‌تر از ۲ به توان ۵۳ هم نمایش داده می‌شود. کلیدهایی که شبیه عدد صحیح هستند، مثل "10" و "2"، در خروجی به ترتیب عددی و پیش از بقیهٔ کلیدها قرار می‌گیرند. برای JSON‌های بسیار بزرگ هم شمارش گره‌ها پس از یک میلیون گره متوقف می‌شود تا مرورگر قفل نکند.

  • اعداد صحیح بزرگ‌تر از ۲ به توان ۵۳ گرد می‌شوند؛ ابزار برای آن‌ها هشدار می‌دهد
  • از کلید تکراری فقط مقدار آخر می‌ماند؛ ابزار جای کلید تکراری را نشان می‌دهد
  • ترتیب کلیدهای عددی‌مانند در خروجی تغییر می‌کند
  • JSON5، توضیح و کامای انتهایی پذیرفته نمی‌شوند
  • فایل‌های چند ده مگابایتی ممکن است مرورگر را کند کنند؛ بالای پنج مگابایت پردازش با دکمهٔ «اجرا» است

بازگشت به فهرست مطالب

خواندن و نوشتن امن JSON در کد

بیشتر خطاهای JSON در محیط واقعی از ساختن دستی رشته می‌آیند؛ مثلاً وقتی برنامه‌نویس متن را با چسباندن رشته‌ها می‌سازد و یک کوتیشن یا خط جدید در نام کاربر کل خروجی را خراب می‌کند. قاعدهٔ ساده این است که JSON را هرگز با دست نسازید؛ از تابع استاندارد زبان مثل json_encode در PHP‏، json.dumps در پایتون یا JSON.stringify در جاوااسکریپت استفاده کنید تا کاراکترهای خاص به‌درستی escape شوند.

در طرف دریافت هم همیشه خطای parse را مدیریت کنید و فرض نکنید ورودی سالم است. پاسخ سرویس دیگر ممکن است به‌جای JSON یک صفحهٔ خطای HTML باشد؛ در این حالت پیام معروف Unexpected token < نشان می‌دهد که اولین کاراکتر پاسخ علامت شروع تگ HTML بوده است. پیش از parse، کد وضعیت HTTP و هدر Content-Type را بررسی کنید.

برای متن فارسی، در PHP گزینهٔ JSON_UNESCAPED_UNICODE خروجی را خواناتر می‌کند و در پایتون ensure_ascii=False همین کار را انجام می‌دهد. هر دو حالت JSON معتبر تولید می‌کنند و تفاوت فقط در خوانایی و حجم است.

بازگشت به فهرست مطالب

کار با JSON در خط فرمان لینوکس

روی سرور، ابزار jq استاندارد عملی کار با JSON است و روی بیشتر توزیع‌ها با یک دستور نصب می‌شود. اگر jq در دسترس نیست، پایتون که روی اغلب سرورها نصب است ماژول json.tool را دارد. ترکیب curl و jq سریع‌ترین راه بررسی پاسخ یک API از داخل سرور است.

یک کاربرد رایج دیگر، بررسی اعتبار فایل‌های تنظیمات پیش از راه‌اندازی دوبارهٔ سرویس است. با jq empty می‌توانید در اسکریپت استقرار، قبل از اعمال تغییر، مطمئن شوید فایل JSON سالم است و سرویس به خاطر یک کامای اضافه از کار نمی‌افتد.

کاردستور
نصب jq در دبیان و اوبونتوsudo apt install jq
زیباسازی فایلjq . data.json
کوچک‌سازی فایلjq -c . data.json > data.min.json
بررسی اعتبار بدون خروجیjq empty config.json && echo OK
زیباسازی با پایتونpython3 -m json.tool data.json
شمارش عناصر یک آرایه از پاسخ APIcurl -s https://example.com/api/items | jq '.items | length'

بازگشت به فهرست مطالب

کاربردهای رایج JSON در پروژه‌های واقعی

JSON فقط قالب پاسخ API نیست. در کار روزمره با سرور و نرم‌افزار، تقریباً همه جا با آن روبه‌رو می‌شوید. یک نمونهٔ ملموس: وقتی وب‌هوک یک سرویس پرداخت به سرور شما می‌رسد و سفارش ثبت نمی‌شود، معمولاً اولین قدم این است که بدنهٔ دریافتی را از لاگ بردارید، در همین ابزار زیبا کنید و با مستندات سرویس مقایسه کنید تا ببینید نام فیلد یا نوع مقدار تغییر کرده یا نه. دانستن چند نکته در هر حوزه کار را ساده‌تر می‌کند:

  • API‌ها: بدنهٔ درخواست و پاسخ؛ هدر Content-Type باید application/json باشد
  • فایل تنظیمات: package.json‏، composer.json و تنظیمات بسیاری از ابزارها
  • لاگ ساختاریافته: هر خط یک شیء JSON که با jq فیلتر می‌شود
  • دیتابیس: ستون jsonb در PostgreSQL و اسناد در MongoDB
  • توکن‌ها: header و payload در JWT همان JSON کدگذاری‌شده است
  • وب‌هوک: داده‌ای که سرویس‌های پرداخت و پیامک به سرور شما می‌فرستند

بازگشت به فهرست مطالب

ذخیرهٔ JSON در دیتابیس: کدام گزینه مناسب است؟

اگر داده‌های شما ساختار ثابتی ندارند، مثلاً ویژگی‌های متفاوت محصولات یک فروشگاه یا تنظیمات هر کاربر، ذخیرهٔ JSON در دیتابیس منطقی است. PostgreSQL با نوع jsonb امکان جست‌وجو و ایندکس‌گذاری روی فیلدهای داخل JSON را می‌دهد و در عین حال بقیهٔ داده‌ها را رابطه‌ای نگه می‌دارد. MySQL هم نوع JSON دارد. اگر تقریباً همهٔ داده‌ها سندمحور هستند، MongoDB انتخاب طبیعی‌تری است.

در ایران‌کلاد می‌توانید هر سه را به‌صورت مدیریت‌شده راه‌اندازی کنید: PostgreSQL مدیریت‌شده، MySQL مدیریت‌شده و MongoDB. اگر ترجیح می‌دهید همه چیز را خودتان کنترل کنید، سرور ابری با پرداخت ساعتی از ۱٬۱۰۰ تومان در ساعت برای پلن mini شروع می‌شود.

بازگشت به فهرست مطالب

JSON در API ایران‌کلاد

API ایران‌کلاد درخواست‌ها و پاسخ‌ها را با JSON رد و بدل می‌کند؛ از ساخت و مدیریت سرور تا مشاهدهٔ وضعیت منابع. هنگام نوشتن اسکریپت خودکارسازی، پاسخ را با jq فیلتر کنید یا برای بررسی سریع ساختار، آن را در همین ابزار زیبا کنید. فقط پیش از جای‌گذاری، کلید API را از دستور یا خروجی حذف کنید.

برای شروع، صفحهٔ شروع کار با API نحوهٔ ساخت کلید و ارسال اولین درخواست را توضیح می‌دهد. اگر پاسخ API را در یک فایل ذخیره می‌کنید، دستور jq -c برای نگه داشتن هر رکورد در یک خط و مقایسهٔ آسان‌تر نسخه‌ها مفید است.

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۰ پرسش

سؤالات متداول

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

آیا JSON من به سرور ایران‌کلاد ارسال یا ذخیره می‌شود؟
خیر. زیباسازی، کوچک‌سازی و اعتبارسنجی با توابع داخلی مرورگر انجام می‌شود. کد این ابزار هیچ درخواست شبکه‌ای نمی‌فرستد و ورودی را در کوکی یا حافظهٔ مرورگر نگه نمی‌دارد. با بستن صفحه، داده از بین می‌رود.
فرق زیباسازی و کوچک‌سازی چیست؟
زیباسازی تورفتگی و خط جدید اضافه می‌کند تا JSON خوانا شود و کوچک‌سازی همهٔ فاصله‌های اضافه را حذف می‌کند تا حجم کم شود. در هر دو حالت خود داده تغییری نمی‌کند و فقط شکل نمایش عوض می‌شود.
شمارهٔ خط و ستون خطا چطور مشخص می‌شود؟
ابزار پیش از تبدیل، متن را با یک بررسی‌کنندهٔ دقیق JSON نویسه به نویسه می‌خواند و اولین جای نادرست را پیدا می‌کند. به همین دلیل شمارهٔ خط و ستون در همهٔ مرورگرها یکسان است و همراه آن دلیل خطا به فارسی، مثل کامای اضافه یا کوتیشن تکی، و همان خط از متن با علامت ^ زیر نویسهٔ مشکل‌دار نشان داده می‌شود.
چرا عدد بزرگ من بعد از فرمت تغییر کرد؟
جاوااسکریپت اعداد را با دقت محدود نگه می‌دارد و اعداد صحیح بزرگ‌تر از حدود نه میلیون میلیارد گرد می‌شوند. ابزار چنین عددی را با هشدار زرد و شمارهٔ خط و ستون مشخص می‌کند. اگر شناسهٔ عددی بزرگ دارید، بهتر است در API آن را به‌صورت رشته ارسال کنید و خروجی این ابزار را برای آن فیلدها مبنا قرار ندهید.
آیا ابزار JSON با توضیح یا کامای انتهایی را می‌پذیرد؟
خیر. ابزار JSON استاندارد را بررسی می‌کند که توضیح، کامای انتهایی، کوتیشن تکی و کلید بدون کوتیشن را مجاز نمی‌داند. اگر فایل شما JSON5 یا JSONC است، پیش از استفاده این موارد را حذف کنید.
پنل آمار چه چیزی را نشان می‌دهد؟
حجم ورودی و خروجی به بایت، درصد کاهش یا افزایش حجم، بیشترین عمق تودرتو و تعداد گره‌ها به تفکیک شیء، آرایه، رشته، عدد، بولی و null. برای JSON‌های خیلی بزرگ، شمارش پس از یک میلیون گره متوقف می‌شود.
چرا ترتیب کلیدها در خروجی عوض شد؟
در جاوااسکریپت کلیدهایی که شبیه عدد صحیح هستند به ترتیب عددی و پیش از بقیهٔ کلیدها قرار می‌گیرند. بقیهٔ کلیدها ترتیب اصلی را حفظ می‌کنند. ترتیب کلیدها در استاندارد JSON معنایی ندارد، اما در مقایسهٔ دو فایل ممکن است تفاوت ظاهری ایجاد کند.
چطور JSON را روی سرور لینوکس فرمت کنم؟
با jq: دستور jq . file.json فایل را زیبا می‌کند و jq -c . آن را کوچک می‌کند. اگر jq نصب نیست، python3 -m json.tool file.json هم همین کار را انجام می‌دهد. برای بررسی اعتبار در اسکریپت از jq empty استفاده کنید.
حداکثر حجم JSON چقدر است؟
محدودیت مشخصی تعیین نشده و همه چیز به حافظه و سرعت دستگاه شما بستگی دارد. تا پنج مگابایت پردازش همزمان با تایپ انجام می‌شود و بالاتر از آن با دکمهٔ «اجرا». فایل‌های چند مگابایتی معمولاً بدون مشکل فرمت می‌شوند؛ برای فایل‌های چند ده مگابایتی بهتر است از jq روی سیستم خودتان استفاده کنید.
آیا این ابزار JSON را با یک Schema اعتبارسنجی می‌کند؟
خیر. ابزار فقط درستی ساختار JSON را بررسی می‌کند، نه اینکه فیلدهای لازم وجود دارند یا نوعشان درست است. برای اعتبارسنجی با JSON Schema از کتابخانه‌های مخصوص در زبان برنامه‌نویسی خودتان استفاده کنید.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

سرور ابری

سرور ابری ایران‌کلاد در کمتر از ۶۰ ثانیه آماده می‌شود؛ با دیسک NVMe SSD، پورت اختصاصی ۱۰ گیگابیت و صورت‌حساب ساعتی تومانی، از ۱٬۱۰۰ تومان در ساعت.