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

جمعبندی: تجزیه، قالببندی، تفاوتگیری و پرسوجو کاملاً در مرورگر شما اجرا میشوند و آفلاین هم کار میکنند؛ پس از پردازش داده حساس تاریخچه localStorage را پاک کنید؛ و بالاتر از ۱۰ مگابایت بهجای جایگذاری فایل در مرورگر به ابزارهای جریانی خط فرمان روی بیاورید.
پیش از جایگذاری یک payload حساس در ابزار آنلاین، بدانید کجا میرود. این مقاله فقط رفتار زمان اجرای ابزار را پوشش میدهد، نه نحو.
۱. داده و حریم خصوصی
آیا قالببند آنلاین JSON دادههایم را به سرور آپلود میکند؟
نه. تجزیه، قالببندی، فشردهسازی، تفاوتگیری و پرسوجو همه در مرورگر رخ میدهند و صفحه هرگز چیزی را که جایگذاری میکنید به سرور برنامه نمیفرستد.
برای تشخیص آپلود یا عدم آپلود داده توسط یک ابزار آنلاین نیازی به خواندن بیانیه حریم خصوصی نیست؛ پنل شبکه مرورگر کافی است:
- ابزار توسعه را باز کنید، به پنل Network بروید و ماندگاری لاگ را فعال کنید؛
- کمی JSON جایگذاری کنید و روی «قالببندی» کلیک کنید؛
- ببینید آیا درخواست XHR یا fetch جدیدی ظاهر میشود و آیا بدنه آن محتوای شما را دارد.
برای ابزاری که واقعاً محلی است، این مرحله فقط درخواستهای داراییهای ایستا را نشان میدهد. در مقابل، اگر یک اقدام قالببندی POST /api/format تولید کند
که بدنهاش متن اصلی شماست، داده بدون توجه به ادعای صفحه از مرورگر خارج شده است.
هر ابزار در این سایت پیادهسازی صرفاً فرانتاند است و خروجی ساخت هیچ API سروری ندارد. پس از قطع اتصال، تازهسازیای که به کش بخورد هنوز کار میکند، و این نیز مستقیمترین راه برای تشخیص اینکه چیزی «کاملاً محلی» است یا نه.
آیا میتوانم آفلاین هم استفاده کنم؟
بله، به شرط آنکه صفحه یک بار بارگذاری شده باشد.
داراییهای سایت در نخستین بازدید در کش مرورگر دانلود میشوند، بنابراین حتی بدون شبکه هم قالببندی، فشردهسازی، تبدیل JSON5 و پرسوجوهای JSONPath کار میکنند. فقط ویژگیهای وابسته به شبکه شکست میخورند، مانند بررسی نسخه جدید یا دانلود نصبکننده دسکتاپ.
آزمون آفلاین نیز راه خوبی برای تأیید «داده هرگز خارج نمیشود» است: اگر لحظه قطع اتصال همهچیز بشکند، هر اقدام با یک سرور صحبت میکرده است.
آیا دادهای محلی ذخیره میشود؟ چگونه پاکش کنم؟
بله، اما فقط در localStorage مرورگر فعلی، و فقط تاریخچه و تنظیمات رابط کاربری.
- تاریخچه: ۱۰۰ ورودی پردازششده آخر به ترتیب معکوس زمان، برای یادآوری داده جایگذاریشده قبلی؛
- تنظیمات رابط کاربری: پوسته، زبان، ترجیحات تورفتگی و موارد مشابه؛
- ذخیره نمیشود: خود فایل، سوابق آپلود یا هر چیزی که هویت داشته باشد.
سه راه برای پاک کردن وجود دارد، از محدودترین تا گستردهترین:
| روش | دامنه | چه زمانی استفاده شود |
|---|---|---|
| «پاک کردن تاریخچه» در صفحه تاریخچه | فقط تاریخچه را حذف میکند، تنظیمات میماند | پس از پردازش داده حساس |
اجرای localStorage.clear() در ابزار توسعه |
همه دادههای محلی این سایت | تشخیص تنظیمات غیرعادی |
| «پاک کردن دادههای مرور» مرورگر برای این سایت | کوکی، کش و ذخیرهسازی با هم | پیش از استفاده از رایانه مشترک |
هنگام پردازش داده تولیدی روی رایانه مشترک، در پایان تاریخچه را پاک کنید، نه اینکه فقط تب را ببندید — localStorage با بستن تب از بین نمیرود.
چرا نویسههای چینی به \u4e2d\u6587 تبدیل شدند؟
چون ویژگی «escape» نویسههای غیر ASCII را به دنبالههای escape یونیکد تبدیل میکند. این رفتار عمدی است، نه mojibake.
\u4e2d نقطه کد نویسه 中 (U+4E2D) است. این دو شکل در JSON معنایی یکسان دارند و به رشته یکسان تجزیه میشوند:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
چه زمانی escape لازم است؟ هنگام جاسازی JSON در سیستم قدیمیای که فقط ASCII را میپذیرد، نوشتن آن در سرآیند HTTP یا تودرتو کردن آن داخل رشتهای دیگر. چه زمانی لازم نیست؟ بیشتر انتقال API و ذخیره فایل به آن نیاز ندارند؛ ذخیره مستقیم چینی بهصورت UTF-8 بایت کمتری مصرف میکند — یک نویسه چینی ۳ بایت است، و پس از escape ۶ بایت.
اگر دیدید چینی به \u4e2d تبدیل شده، اول بررسی کنید آیا روی دکمه «Escape» کلیک کردهاید، نه اینکه به خرابی رمزگذاری شک کنید.
۲. فایلها و حجم
چه حجم فایلی پشتیبانی میشود؟
در سمت مرورگر محدودیت سختی وجود ندارد؛ محدودیتهای واقعی از سه جا میآیند:
| مرحله | گلوگاه تقریبی | نشانه |
|---|---|---|
| جایگذاری در جعبه متن | ۱–۵ مگابایت | ورودی پس از جایگذاری کند میشود، تأخیر مکاننما |
JSON.parse |
۵۰–۱۰۰ مگابایت | رشته اصلی چند ثانیه مسدود میشود، صفحه پاسخ نمیدهد |
| رندر درختی | ۱۰ تا ۲۰ هزار گره | افت فریم هنگام باز کردن، اسکرول قفل میشود |
یعنی فایلی چند ده مگابایتی «تجزیه میشود» اما «قابل استفاده نیست». وقتی واقعاً باید چنین دادهای را پردازش کنید، حرکت درست یافتن ابزار آنلاین قویتر نیست، بلکه روی آوردن به جریان است (به پرسشهای متداول عملکرد و امنیت مراجعه کنید).
قاعده سرانگشتی: زیر ۲ مگابایت ابزار آنلاین روان میماند؛ ۲ تا ۱۰ مگابایت یعنی پذیرش یکی دو تأخیر؛ بالاتر از ۱۰ مگابایت، اسکریپت محلی را ترجیح دهید.
مرورگر بعد از جایگذاری قفل میکند. حالا چه؟
اول تازهسازی نکنید — تازهسازی محتوا را از بین میبرد و باید دوباره جایگذاری کنید. به این ترتیب نجاتش دهید:
- ۱۰ تا ۳۰ ثانیه صبر کنید. در بیشتر موارد رشته اصلی در حال تجزیه یا رندر است و خودش بهبود مییابد؛
- بهمحض بهبود، فوراً به نمای «فشردهسازی» بروید یا درخت را جمع کنید تا گرههای DOM کم شوند؛
- محتوا را در فایل محلی کپی کنید و به خط فرمان بروید:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
دفعه بعد که به فایل بزرگ برخوردید، ابتدا wc -c اجرا کنید تا تعداد بایت را ببینید، سپس تصمیم بگیرید آیا در مرورگر جایگذاری شود.
چرا بعد از جایگذاری قالببندی تغییری نکرد؟
سه علت رایج، به ترتیب فراوانی:
- ورودی از قبل فشرده است و خطای نحوی ندارد: قالببندی فقط تورفتگی را تنظیم میکند، پس اگر اصل واقعاً دو خط است، بعدش هم دو خط میماند — خطوط جدید داخل رشتهها گسترش نمییابند؛
- محتوا JSON نیست: مثلاً یک object literal جاوااسکریپت جایگذاری کردهاید (کلیدهای بیگیومه، تکگیومه)، و پارسر بهجای قالببندی خطا گزارش میکند؛
- دکمه اشتباه را زدهاید: فشردهسازی و قالببندی در جهت مخالفاند و فشردهسازی همه تورفتگی را حذف میکند.
چگونه بفهمیم: به تعداد نویسه در گوشه بالا-راست ناحیه خروجی نگاه کنید. پس از قالببندی تعداد باید بیشتر شود (تورفتگی و خط جدید اضافه)؛ اگر کمتر شد، فشردهسازی را اجرا کردهاید.
۳. ورودی و خروجی
چگونه نتیجه را به فایل خروجی بگیرم؟
سه راه، به ترتیب قابلیت اطمینان:
| روش | اقدام | چه زمانی استفاده شود |
|---|---|---|
| دکمه دانلود | روی «دانلود» کلیک کنید تا فایل .json تولید شود |
نتایج بزرگ که باید بایگانی شوند |
| کپی در کلیپبورد | روی «کپی» کلیک کنید | نتایج کوچک که مستقیم در کد بازمیچسبانید |
| انتخاب و کپی دستی | ناحیه خروجی را انتخاب کنید و Ctrl/Cmd + C بزنید |
راه جایگزین وقتی دکمه کپی شکست میخورد |
فایل دانلودشده بهصورت پیشفرض UTF-8 بدون BOM است. این مهم است: JSON دارای BOM در بسیاری از پارسرها کلاً میشکند (بخش BOM را در پرسشهای متداول نحو و قالب ببینید).
آیا JSON5 و JSONC پشتیبانی میشوند؟
بله، اما «تجزیه» را از «خروجی» جدا کنید.
- در سمت ورودی میتوانید JSON5 (تکگیومه، کلیدهای بیگیومه، کامنت، ویرگول انتهایی، عدد هگزادسیمال) یا JSONC (فقط کامنت) جایگذاری کنید؛
- در سمت خروجی میتوانید به JSON استاندارد تبدیل کنید، یا JSON استاندارد را دوباره به JSON5 تبدیل کنید تا ویرایش دستی آسانتر شود.
هنگام عبور از مرز سیستمها همیشه JSON استاندارد بفرستید. JSON5 گویشی برای انسانهایی است که پیکربندی مینویسند؛ بدنه درخواستی با
Content-Type: application/json که کامنت یا ویرگول انتهایی داشته باشد معمولاً توسط سرور رد میشود.
۴. محیط و سازگاری
آیا روی گوشی کار میکند؟
بله. رابط به یک ستون بازچینش میشود و قالببندی، فشردهسازی، تفاوتگیری و JSONPath همه حفظ میشوند.
اما پردازش فایلهای بزرگ روی گوشی تجربه ضعیفی است: کیبورد نرم محتوا را میپوشاند، انتخاب متن سخت است، و مرورگر ممکن است هنگام جابهجایی بین برنامهها صفحه را دور بیندازد و محتوای شما از بین برود. بهعنوان اضطرار قابل قبول است، اما روزمره روی دسکتاپ انجام دهید.
چرا همان فایل در Chrome باز میشود اما در Safari خطا میدهد؟
معمولاً تفاوت مرورگر نیست، تفاوت رمزگذاری است. به این ترتیب عیبیابی کنید:
- BOM: UTF-8 ذخیرهشده با Notepad ویندوز شامل BOM است، که برخی پارسرها تحمل نمیکنند؛
- پایان خطوط: مخلوط شدن CRLF و LF روی خود JSON اثر ندارد، اما شماره خط خطای گزارششده را جابهجا میکند، پس «موقعیت خطا اشتباه است» به نظر میرسد؛
- نویسههای نامرئی: متن کپیشده از یک صفحه وب ممکن است فاصله با عرض صفر (U+200B) داشته باشد، نامرئی برای چشم اما کافی برای شکستن تطبیق کلید.
یک فرمان همه را میبیند:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
۵. مرجع سریع
| پرسش | نتیجه |
|---|---|
| آیا داده آپلود میشود | نه، همهچیز محلی در مرورگر پردازش میشود و آفلاین کار میکند |
| داده کجا ذخیره میشود | localStorage، فقط تاریخچه و تنظیمات، هرگز فایل |
| چه حجم فایلی معقول است | زیر ۲ مگابایت روان؛ بالاتر از ۱۰ مگابایت به خط فرمان بروید |
چینی به \u تبدیل شد |
روی escape کلیک کردهاید؛ معادل اما حجیمتر و معمولاً غیرضروری |
| قفل کرد، حالا چه | صبر برای بهبود → جمع کردن درخت → کپی بیرون و استفاده از jq |
| آیا خروجی بدون BOM است | بله، UTF-8 بدون BOM |
| آیا کامنت پشتیبانی میشود | در سمت ورودی JSON5/JSONC؛ استاندارد JSON بفرستید |