ابزار قالببندی JSON یک راهکار تحت مرورگر برای زیباسازی، اعتبارسنجی، فشردهسازی و بررسی ساختار دادههای JSON است. این ابزار به توسعهدهندگان و تحلیلگران داده کمک میکند تا ساختارهای پیچیده متنی را به قالبهای خوانا تبدیل کنند، خطاهای سینتکسی را بیابند و دادهها را برای انتقال بهینه آماده سازند.
ساختار و نحو استاندارد JSON
قالب دادهای JSON (JavaScript Object Notation) یک استاندارد متنی سبک برای تبادل داده است که بر پایه جفتهای کلید و مقدار (در اشیاء) و لیستهای مرتب (در آرایهها) بنا شده است. در این ساختار، رعایت دقیق قوانین سینتکس الزامی است. هرگونه انحراف از این قوانین، مانند فراموش کردن گیومهها یا ویرگولها، سند را نامعتبر میسازد. این ابزار با بررسی دقیق ساختار ورودی، به کاربران کمک میکند تا از صحت گرامری دادههای خود اطمینان حاصل کنند.
یکی از ویژگیهای کلیدی این ابزار، حفظ دقیق اعداد بزرگ (Large Integers) بدون از دست رفتن دقت ریاضی آنها در حین فرآیند قالببندی است. همچنین، وجود کلیدهای تکراری در اشیاء به عنوان یک خطای ساختاری در نظر گرفته میشود و ابزار به جای ادغام یا نادیده گرفتن مقادیر، خطای مشخصی را صادر میکند تا از یکپارچگی دادهها محافظت شود.
ورودیهای پشتیبانیشده و محدودیتهای فایل
کاربران میتوانند به روشهای مختلفی دادههای خود را وارد ابزار کنند:
- جایگذاری مستقیم: چسباندن متن JSON در ناحیه ورودی اصلی.
- بارگذاری فایل: باز کردن فایلهای با پسوند
.jsonیا.txtاز طریق دکمه "باز کردن فایل" یا کشیدن و رها کردن آنها در محیط ابزار.
برای پردازش صحیح و بدون خطا، قوانین و محدودیتهای زیر بر فایلهای ورودی اعمال میشود:
- کدگذاری: فایلها حتماً باید با استاندارد UTF-8 کدگذاری شده باشند. در غیر این صورت، پیام "این فایل متن UTF-8 نیست، بنابراین نمیتوان آن را اینجا باز کرد." نمایش داده میشود.
- محدودیت حجم فایل: حداکثر اندازه مجاز برای فایلهای ورودی ۱۰ مگابایت (10 MiB) است. اگر فایل فراتر از این حد باشد، پیام "فایل خیلی بزرگ است — حد مجاز
{limit}است." نمایش داده میشود. - نوع فایل: در صورت انتخاب فرمتهای غیرمجاز، پیام "نوع فایل پشتیبانی نمیشود — یک فایل.json یا.txt انتخاب کنید." صادر میشود.
- خطای خواندن: اگر سیستم در خواندن فایل دچار مشکل شود، پیام "خواندن این فایل ممکن نبود. آن را دوباره انتخاب کنید." به کاربر نشان داده میشود.
علاوه بر این، آستانه پردازش همزمان (Synchronous) در این ابزار ۲۵۰,۰۰۰ کاراکتر است. اگر حجم ورودی از حد پردازش ابزار فراتر رود، پیام "ورودی از {limit} بزرگتر است و از توان پردازش این ابزار فراتر میرود." نمایش داده میشود و در صورت طولانی شدن فرآیند بررسی، سیستم با نمایش پیام "بررسی این JSON بیش از حد طول کشید و متوقف شد. سند کوچکتری را امتحان کنید." عملیات را متوقف میکند.
قالببندی و فشردهسازی دادهها
این ابزار دو عملیات اصلی را روی متون استاندارد انجام میدهد:
۱. قالببندی (Formatting): با اعمال فاصلهگذاریهای مشخص (Indentation)، ساختار تودرتوی سند را برجسته و خوانا میکند. پس از انجام، پیام "JSON قالببندی شد." نمایش داده میشود. ۲. فشردهسازی (Minification): تمام فضاهای خالی، فاصلهها و شکستگیهای خطوط غیرضروری را حذف میکند تا حجم سند برای ذخیرهسازی یا انتقال در شبکه کاهش یابد. پس از انجام این عملیات، پیام "JSON فشرده شد." صادر میشود.
کاربران همچنین میتوانند کلیدهای اشیاء را به صورت بازگشتی بر اساس ترتیب نقطهکد (Code-point order) مرتب کنند. این کار با کلیک روی دکمه "مرتبسازی کلیدها" انجام میشود که راهنمای آن به صورت "کلیدهای اشیاء را بهصورت بازگشتی بر اساس ترتیب نقطهکد مرتب میکند. ترتیب آرایهها هرگز تغییر نمیکند." نمایش داده میشود. پس از اعمال، پیام "کلیدها مرتب شدند — ترتیب آرایهها تغییری نکرد. برای واگرد Ctrl/Cmd+Z را بزنید." ظاهر میشود.
ناوبری و بررسی ساختار با نمایش درختی
برای اسناد معتبر، ابزار امکان سوئیچ بین دو حالت نمایش "کد" و "درختی" را فراهم میکند. در حالت نمایش درختی (Tree view)، ساختار دادهها به صورت یک نمودار سلسلهمراتبی تعاملی با برچسب ریشه "ریشه" نمایش داده میشود.
ویژگیها و محدودیتهای نمایش درختی عبارتند از:
- جستجوی پیشرفته: کاربران میتوانند با استفاده از کادر "جستجوی کلیدها و مقدارها"، کلیدها و مقادیر خاصی را جستجو کنند. تعداد تطابقها به صورت "
{current}از{total}" یا در حالت محدود شده به صورت "{current}از{total}+" نمایش داده میشود و در صورت عدم وجود تطابق، عبارت "موردی یافت نشد" نشان داده میشود. برای جابجایی بین نتایج از دکمههای "مورد قبلی" و "مورد بعدی" استفاده میشود. - کنترل گرهها: دکمههای "باز کردن همه" و "بستن همه" برای مدیریت نمایش گرهها در دسترس هستند. برای گرههای فردی نیز گزینههای "باز کردن
{key}" و "بستن{key}" وجود دارد. - محدودیتهای ساختاری: اگر سند دارای خطای سینتکسی باشد، پیام "برای مشاهده به صورت درختی، خطای JSON را برطرف کنید." نمایش داده میشود. در صورتی که سند بسیار بزرگ باشد، پیام "این JSON برای نمایش به صورت درختی بسیار بزرگ است." یا "این JSON مقدارهای بیشتری از آن دارد که بتوان آن را به صورت درختی نمایش داد." صادر میشود. همچنین در هنگام باز کردن گرهها در اسناد بزرگ، محدودیت نمایش با پیام "این JSON بزرگتر از آن است که کامل باز شود —
{count}ردیف نخست نمایش داده میشود." اعمال شده و دکمه "نمایش{count}مورد دیگر…" در دسترس قرار میگیرد. - استخراج داده: با کلیک روی منوی "گزینههای کپی برای
{key}"، کاربر میتواند از گزینههای "کپی مقدار"، "کپی JSON Pointer" یا "کپی JSONPath" برای استخراج دقیق مسیر دادهها استفاده کند.
عیبیابی و اصلاح خطاهای سینتکسی
ابزار به طور خودکار کدهای نامعتبر را تحلیل کرده و محل دقیق خطا را با عبارت "خط {line}، ستون {col}" مشخص میکند و دکمه "رفتن به خطا" را در اختیار کاربر قرار میدهد. خطاهای شناساییشده شامل موارد زیر است:
| نوع خطای شناساییشده | پیام خطا در ابزار |
|---|---|
| جا افتادن ویرگول بین اعضا | "ویرگول بین آیتمها جا افتاده است" |
| وجود ویرگول اضافی قبل از بستن براکت/آکاردئون | "ویرگول اضافی پیش از براکت پایانی" |
| عدم استفاده از گیومه دوتایی برای کلیدها | "کلیدهای آبجکت باید داخل گیومه دوتایی باشند" |
| فراموشی علامت دونقطه بعد از کلید | "دونقطه بعد از نام ویژگی جا افتاده است" |
| باز ماندن رشته متنی | "گیومه پایانی یک رشته جا افتاده است" |
| قطع ناگهانی سند | "JSON خیلی زود تمام میشود — ناقص به نظر میرسد" |
| وجود کاراکتر غیرمجاز در محل مقدار | "نویسه غیرمنتظره در جایی که باید مقدار باشد" |
| تودرتویی بیش از حد مجاز | "این JSON بیش از حد تودرتو است و قابل پردازش نیست" |
| وجود کلیدهای همنام و تکراری | "کلید تکراری {key} — پیش از قالببندی یکی را حذف کنید" |
شناسایی و اصلاح قالبهای شبه-JSON
این ابزار قادر است ساختارهای متنی که کاملاً استاندارد نیستند اما حاوی دادههای JSON هستند را شناسایی کرده و پیشنهاد اصلاح ارائه دهد:
- بلاک کد مارکداون: با تشخیص پیام "این شبیه JSON داخل بلوک کد Markdown است."، اقدام "با اعمال، فقط JSON داخل بلوک نگه داشته میشود." پیشنهاد میشود.
- رشتههای Escape شده: با تشخیص پیام "این شبیه JSON است که درون یک رشته escape شده است."، اقدام "با اعمال، رشته از حالت escape خارج شده و به JSON ساده تبدیل میشود." پیشنهاد میشود.
- دیکشنری پایتون: با تشخیص پیام "این بیشتر شبیه دیکشنری به سبک Python است تا JSON."، اقدام "با اعمال، نقلقولها و True/False/None بهصورت JSON بازنویسی میشوند." پیشنهاد میشود.
- فرمت JSON Lines: با تشخیص پیام "این شبیه JSON Lines است — در هر خط یک مقدار."، اقدام "با اعمال، خطها در یک آرایه JSON جمع میشوند." پیشنهاد میشود.
- پوشش JSONP: با تشخیص پیام "این شبیه JSON پیچیدهشده در یک callback از نوع JSONP است."، اقدام "با اعمال، پوشش callback حذف میشود." پیشنهاد میشود.
- فرمت JSONC: با تشخیص پیام "این شبیه JSONC است — کامنت یا ویرگول انتهایی دارد. نحو را به JSONC تغییر دهید یا اصلاح را اعمال کنید."، اقدام "با اعمال، کامنتها و ویرگولهای انتهایی حذف میشوند." پیشنهاد میشود.
کاربران میتوانند با کلیک روی "پیشنمایش اصلاح"، پنجره "پیشنمایش اصلاح" را باز کرده و تغییرات را در دو ستون "اصلی" و "پس از اصلاح" مقایسه کنند. در صورت محدود بودن فضا، پیام "پیشنمایش کوتاه شده است — اصلاح روی کل سند اعمال میشود." نمایش داده میشود. با کلیک روی "اعمال اصلاح"، تغییرات ثبت شده و پیام "اصلاح اعمال شد. برای واگرد Ctrl/Cmd+Z را بزنید." صادر میشود. در صورت عدم امکان اصلاح خودکار، پیام "این ورودی بهصورت خودکار قابل اصلاح نبود." نمایش داده میشود.
حریم خصوصی و امنیت دادهها
پردازش دادههای ورودی شما به طور کامل در مرورگر خودتان انجام میشود و هیچ دادهای به سرور BroBroGo ارسال نمیشود. این شیوه پردازش محلی تضمین میکند که محتوای اسناد و اطلاعات حساس شما از دستگاهتان خارج نخواهد شد.
پرسشهای متداول
آیا فایل JSON من آپلود میشود؟
خیر. ابزار قالببندی در مرورگر شما اجرا میشود و فایل JSON شما را آپلود نمیکند.
فشردهسازی (Minify) چه کاری انجام میدهد؟
فشردهسازی (Minify) فضاهای خالی و شکستگیهای خط غیرضروری را حذف میکند در حالی که دادههای JSON را بدون تغییر نگه میدارد.
اگر فایل من حاوی کامنت باشد چه اتفاقی میافتد؟
کامنتها در استاندارد JSON مجاز نیستند. ابزار این حالت را به عنوان ساختار JSONC شناسایی کرده و به شما پیشنهاد میدهد که یا نحو را به JSONC تغییر دهید یا با اعمال اصلاحات خودکار، کامنتها را حذف کنید.
چرا خطای کلید تکراری دریافت میکنم؟
این ابزار برای جلوگیری از مخدوش شدن دادهها و رفتارهای غیرقابلپیشبینی، وجود کلیدهای همنام در یک شیء را مجاز نمیداند و از شما میخواهد پیش از قالببندی، کلید تکراری را حذف کنید.