← همه ابزارها

فرمت‌بندی، اعتبارسنجی و فشرده‌سازی JSON

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

قالب‌بندی، اعتبارسنجی و فشرده‌سازی JSON مستقیم در مرورگر

JSON که مخفف JavaScript Object Notation است، زبان مشترک وب مدرن به شمار می‌رود. تقریباً هر REST API که فراخوانی می‌کنید داده را به این فرمت بازمی‌گرداند، بیشتر فایل‌های پیکربندی بر آن تکیه دارند، و سهم بزرگی از داده‌ای که میان سرویس‌ها و رابط‌های کاربری جریان دارد به صورت JSON سریال‌سازی می‌شود. محبوبیت این فرمت دلیل محکمی دارد: ساختاری ساده و زبان‌مستقل است و به خوبی با اشیاء، آرایه‌ها، رشته‌ها و اعدادی که برنامه‌نویسان در ذهن دارند تطابق پیدا می‌کند. اما همین فشردگی یک ضعف دارد. همین که سرور یک پاسخ تک‌خطی پر از صدها کلید تودرتو تحویل دهد، ساختار جذاب JSON در انبوهی از کاراکترها گم می‌شود.

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

Abstract glowing nested braces and indented JSON structure on a dark indigo background
تورفتگی یک توده صاف از داده را به درختی تبدیل می‌کند که واقعاً می‌توان خواند.

چرا تورفتگی JSON را دوباره خوانا می‌کند

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

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

اعتبارسنجی و خطاهایی که همه را به دردسر می‌اندازند

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

  • کاماهای انتهایی. JSON کاما پس از آخرین عنصر یک شیء یا آرایه را مجاز نمی‌داند. JavaScript آن را تحمل می‌کند، و دقیقاً به همین دلیل است که توسعه‌دهندگان آن را از روی عادت الصاق می‌کنند.
  • نقل‌قول‌های تکی. رشته‌ها و کلیدها باید از نقل‌قول دوتایی استفاده کنند. بردن مستقیم یک object literal از کد منبع اغلب نقل‌قول‌های تکی را باقی می‌گذارد و تجزیه‌کننده آن را رد می‌کند.
  • کلیدهای بدون نقل‌قول. هر کلید باید یک رشته نقل‌قول‌دار باشد. کلیدهای بدون نقل‌قول، که در JavaScript object کاملاً معتبرند، در JSON نامعتبرند.
  • براکت‌های گمشده یا ناهمخوان. یک { یا [ بسته‌نشده، یا یک بستن اضافی، کل سند را خراب می‌کند. قالب‌بند جایی که تعادل برهم می‌خورد را برجسته می‌کند.
  • کامنت‌ها و مقادیر undefined. JSON کامنت و undefined ندارد؛ فقط null، بولین‌ها، اعداد، رشته‌ها، آرایه‌ها و اشیاء مجازند.

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

Tangled messy data resolving into an ordered glowing structure with a validation glow
اعتبارسنجی یک توده از داده ناقص را به یک سند تایید‌شده و خوش‌ساختار تبدیل می‌کند.

مینیفای کردن برای کوچک کردن حجم داده

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

پردازش محلی داده‌های حساس را خصوصی نگه می‌دارد

چون هر مرحله در JavaScript درون مرورگر شما اجرا می‌شود، JSON الصاق‌شده هرگز دستگاه شما را ترک نمی‌کند. این یک نکته بازاریابی نیست، یک تضمین عملی است. می‌توانید یک پاسخ خام API پر از bearer token، یک صادرات از داده کاربران، یا یک پیکربندی سرویس داخلی را بدون نگرانی از اینکه سرور شخص ثالثی آن را ثبت کند، وارد کنید. تب را ببندید و داده از بین می‌رود. برای هر کسی که تحت قوانین نگه‌داری داده کار می‌کند، پردازش محلی یک دسته کامل از ریسک را حذف می‌کند.

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

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

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

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

تفاوت قالب‌بندی و مینیفای کردن چیست؟

قالب‌بندی تورفتگی و شکست خطی اضافه می‌کند تا JSON خوانا شود. مینیفای کردن تمام فاصله‌های اختیاری را حذف می‌کند تا حجم داده تا حد ممکن کم شود. خود داده در هر دو شکل یکسان است.

چرا JSON من اعتبارسنجی نمی‌شود؟

رایج‌ترین علل کاماهای انتهایی، نقل‌قول‌های تکی به جای دوتایی، کلیدهای بدون نقل‌قول، کامنت‌ها و براکت‌های گمشده یا ناهمخوان هستند. اعتبارسنج به خطی که مشکل در آن رخ داده اشاره می‌کند.

آیا می‌توانم در JSON از نقل‌قول تکی استفاده کنم؟

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

آیا ابزار هنگام قالب‌بندی داده‌ام را تغییر می‌دهد؟

خیر. قالب‌بندی فقط فاصله اضافه یا حذف می‌کند. کلیدها، مقادیر و ترتیب آن‌ها دقیقاً همان‌طور که بودند باقی می‌مانند، بنابراین آنچه می‌خوانید همان چیزی است که API واقعاً فرستاده است.

آیا محدودیت اندازه وجود دارد؟

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