فشردهسازی JSON بدون تغییر اعداد بزرگ
خروجی فشردهشده را انتخاب کنید و اگر هر بایت مهم است، خطنوی پایانی را خاموش کنید. این ابزار دستور زبان کامل JSON را اعتبارسنجی میکند، فضای خالی را فقط جایی که دستور زبان اجازه میدهد حذف میکند و توکنهای عددی را دقیقاً همانطور که هستند مینویسد، نه اینکه آنها را از محاسبات ممیز شناور عبور دهد.
یک سند JSON با کدگذاری UTF-۸ تا ۲۵ مگابایت. بایتهای آن در همین تب مرورگر میمانند.
نتیجهها بدون تضمین درستی ارائه میشوند. روش و منابع در پایین صفحه منتشر شدهاند تا بتوانید محاسبه را بررسی کنید.
فاصلهها، تبها و شکست خطهای درون رشتههای نقلقولشده دادهاند و هرگز حذف نمیشوند.
مقداری مانند ۹۰۰۷۱۹۹۲۵۴۷۴۰۹۹۳ دقیقاً به همین شکل نوشته میشود.
نتیجهٔ فشردهشده یک فایل محلی جدید است؛ فایل اصلی تغییر نمیکند.
چگونگی کار
مراحل انجام کار
- فایل را بهصورت UTF-۸ سختگیرانه بخوانید. یک نشانهٔ ترتیب بایت UTF-۸ در ابتدای فایل را برای سازگاری بپذیرید و مصرف کنید، اما آن را در نتیجه ننویسید.
- پیش از تولید فایل خروجی، سند کامل را بهعنوان یک مقدار JSON مطابق RFC ۸۲۵۹ اعتبارسنجی کنید. فایل خالی، UTF-۸ نامعتبر، محتوای اضافی در انتها یا اشیا، آرایهها، رشتهها، اعداد و نامهای لفظی بدشکل را رد کنید.
- منبع اعتبارسنجیشده را اسکن کنید و در این حین رشتههای نقلقولشده و escape های بکاسلش را دنبال کنید. درون رشته هر واحد کد را دقیقاً کپی کنید؛ بیرون رشته فقط فاصله، تب، بازگشت نورد (CR) و خطنو (LF) را کنار بگذارید.
- برای خروجی خوانا، تورفتگی انتخابشده را پس از باز شدن هر شیء یا آرایه و پس از هر کاما، یک فاصله پس از دونقطه، و یک خط با تورفتگی درست پیش از بسته شدن هر شیء یا آرایهٔ غیرخالی درج کنید. برای خروجی فشردهشده هیچ فضای خالی اختیاریای درج نکنید.
- متن بازنویسیشده را بهصورت UTF-۸ کدگذاری کنید، فقط در صورت انتخاب یک خطنوی پایانی اضافه کنید و یک فایل .json جدید ارائه دهید. هرگز توکنهای عددی را برای خروجی به مقادیر ممیز شناور تبدیل نکنید.
فرضها
- قالببندی همان متعارفسازی نیست. ترتیب اعضای شیء، نامهای تکراری، شکل نوشتاری اعداد و انتخاب escape های رشتهها همانطور که نویسنده نوشته میمانند، حتی جایی که تجزیهگر دیگری ممکن است آنها را نرمال یا ادغام کند.
- JSON که میان سامانههای مستقل مبادله میشود، طبق RFC ۸۲۵۹ با کدگذاری UTF-۸ است. UTF-۱۶ و صفحهکدهای قدیمی پیش از اعمال این دستور زبان، به مبدل جداگانهٔ کدگذاری متن تعلق دارند.
- تجزیهگر بومی JSON فقط بهعنوان اعتبارسنج سختگیر دستور زبان استفاده میشود. بایتهای قابل دانلود از یک اسکن توکننگهدار روی متن اصلی میآیند، نه از JSON.stringify.
- سقف ورودی ۲۵ مگابایت است. بازنویسی هر ۲۵۰٬۰۰۰ نویسه کنترل را واگذار میکند تا پیشرفت و لغو پاسخگو بمانند؛ خود اعتبارسنجی بومی عمداً به تجزیهگر بهینهشدهٔ مرورگر سپرده شده است.
پرسشهای رایج
آیا فشردهساز فاصلههای درون یک رشتهٔ JSON را حذف میکند؟
خیر. رشتههای نقلقولشده و دنبالههای escape را دنبال میکند و فضای خالی را فقط وقتی بیرون از رشته باشد حذف میکند.
چرا پیش از حذف فضای خالی اعتبارسنجی میشود؟
در غیر این صورت یک بازنویسی بایتبهبایت میتواند فایل کوچکتری تولید کند که همچنان نامعتبر است. اعتبارسنجی تضمین میکند که کل منبع، پیش از ارائهٔ هر چیزی برای دانلود، یک مقدار JSON با رشتهها، اعداد، آرایهها و اشیای درست است.
منابع
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: قالببند JSON.