Tentang alat ini
Pemformatan JSON (selalunya dipanggil pencetakan cantik atau pengindahan) mengambil JSON padat dan menambah ruang putih — pemisah baris, lekukan, jarak yang konsisten — untuk menjadikan struktur kelihatan kepada pembaca manusia. JSON padat ialah format yang sesuai untuk penghantaran: ia meminimumkan bait melalui wayar dan storan. JSON yang diformatkan ialah format yang betul untuk pemeriksaan: hierarki inden mendedahkan struktur bersarang sepintas lalu, menjadikan perbezaan bermakna dan membolehkan pembangun mencari medan tertentu tanpa menghuraikan dokumen secara mental.
Pemformat ini menghuraikan input sebagai JSON untuk mengesahkan ia sah, kemudian memancarkannya semula dengan lekukan yang konsisten. Input tidak sah menghasilkan ralat yang menunjuk kepada masalah sintaks. Input yang sah diformatkan semula tanpa mengira betapa padat atau kemas sumber itu. Lekukan lalai kepada dua ruang, sepadan dengan konvensyen JavaScript yang paling biasa.
Pemformat juga menawarkan minifikasi (operasi songsang), yang menghilangkan semua ruang kosong yang tidak diperlukan untuk menghasilkan JSON sah terkecil. Keluaran yang dikecilkan berguna untuk penghantaran pengeluaran; output berformat berguna untuk pembangunan dan penyahpepijatan.
Mengapa Format JSON
Membaca JSON bersarang dalam tanpa lekukan pada dasarnya adalah mustahil — strukturnya secara teknikalnya ada tetapi tidak kelihatan. Walaupun JSON yang sederhana kompleks mendapat manfaat yang besar daripada pemformatan. Penyemak kod, penyahpepijat API dan sesiapa sahaja yang cuba memahami muatan data memerlukan JSON yang diformatkan untuk melihat perkara yang sebenarnya ada.
Pemformatan juga menangkap ralat. Jika JSON gagal menghuraikan semasa pemformatan, mesej ralat mengenal pasti kedudukan tepat masalah sintaks — selalunya koma hilang, kunci tidak disebut atau koma mengekor sesat yang tidak dibenderakan oleh sistem pengeluar. Pemformat ialah pengesah JSON yang paling mudah tersedia.
Butiran Teknikal
Pemformat menggunakan JSON.parse dan JSON.stringify, pasangan yang sama setiap masa jalan JavaScript dihantar. Penghuraian mengikut RFC 8259 (spek JSON semasa), menerima JSON yang ketat tetapi menolak literal objek JavaScript, ulasan, koma di belakang dan sambungan JSON5 yang lain.
JSON.stringify menerima hujah inden: nombor (ruang) atau rentetan (aksara inden tersuai, seperti tab). Pemformat mendedahkan kedua-dua pilihan. Output diisih dalam susunan sumber untuk objek (sejak ES2015 mengekalkan susunan sisipan harta di semua enjin utama).
Kes tepi: bilangan besar melebihi Number.MAX_SAFE_INTEGER kehilangan ketepatan apabila dihuraikan (had JSON yang diketahui; gunakan nilai rentetan untuk ID yang melebihi 2^53). Unicode melarikan diri dalam rentetan dipelihara secara literal. Ruang putih mengekori dilucutkan daripada setiap baris.
Soalan lazim
- Apakah jenis ralat JSON yang dikesan oleh alat ini?
- Alat ini mengesan tiada koma, kurungan/tanda kurung yang tidak dipadankan, pelepasan rentetan yang tidak sah, koma di belakang, rentetan petikan tunggal dan pelanggaran sintaks lain mengikut spesifikasi RFC 8259 JSON.
- Bolehkah ia mengendalikan fail JSON yang sangat besar?
- ya. Pemformat memproses JSON dalam penyemak imbas anda menggunakan penghuraian JavaScript asli, jadi ia mengendalikan fail sehingga beberapa megabait dengan cekap. Untuk fail yang sangat besar (50MB+), masa pemprosesan bergantung pada peranti anda.
- Adakah ia menyokong JSON dengan ulasan (JSONC)?
- JSON standard tidak membenarkan ulasan. Jika input anda mengandungi ulasan, pengesah akan membenderakannya sebagai ralat. Untuk sokongan JSONC, alih keluar ulasan sebelum memformat.
- Adakah pemformatan akan mengubah nilai data saya?
- Tidak. Pemformatan hanya melaraskan ruang putih dan lekukan — jenis data, nilai dan struktur anda kekal sama.
- Adakah ciri JSON5 disokong (ulasan, koma di belakang)?
- Tidak. Pemformat mengikut RFC 8259 dengan ketat. Ciri JSON5 menyebabkan ralat penghuraian. Untuk bekerja dengan JSON5, tukar kepada JSON standard dahulu menggunakan penghurai JSON5.
- Adakah JSON saya dimuat naik ke pelayan?
- Tidak. Penghuraian dan pemformatan berlaku sepenuhnya dalam penyemak imbas anda menggunakan fungsi JSON terbina dalam.
- Adakah bilangan besar akan kehilangan ketepatan?
- JavaScript mewakili nombor sebagai terapung 64-bit, jadi integer di atas 2^53 (kira-kira 9 kuadrilion) kehilangan ketepatan. Untuk ID atau nilai integer besar lain, simpannya sebagai rentetan dalam JSON.
- Bolehkah saya mengisih kekunci mengikut abjad?
- JSON.stringify tidak mengisih kekunci. Gunakan langkah isihan berasingan (atau pemformat dengan sokongan pengisihan) untuk menyusun abjad kekunci sebelum merangkai.