Soalan Lazim Penggunaan Alat: Data, Fail dan Eksport
Inti pati: Adakah data dimuat naik, berapa besar fail yang berfungsi, adakah apa-apa disimpan secara setempat, mengapa Cina bertukar menjadi escape: sepuluh soalan yang menjelaskan sempadan sebenar alat JSON dalam talian.

Pokoknya: penghuraian, pemformatan, perbandingan dan pertanyaan berjalan sepenuhnya dalam pelayar anda dan terus berfungsi luar talian; kosongkan sejarah localStorage selepas mengendalikan data sensitif; dan beralih kepada alat penstriman baris arahan melebihi 10 MB dan bukannya menampal fail ke dalam pelayar.
Sebelum menampal muatan sensitif ke dalam alat dalam talian, ketahui ke mana ia pergi. Artikel ini hanya merangkumi tingkah laku masa jalan alat, bukan sintaks.
1. Data dan privasi
Adakah pemformat JSON dalam talian memuat naik data saya ke pelayan?
Tidak. Penghuraian, pemformatan, pengecilan, perbandingan dan pertanyaan semuanya berlaku dalam pelayar, dan halaman tidak pernah menghantar apa yang anda tampal ke pelayan aplikasi.
Anda tidak perlu membaca pernyataan privasi untuk mengetahui sama ada alat dalam talian memuat naik data; panel rangkaian pelayar sudah memadai:
- Buka alat pembangun, tukar ke panel Rangkaian, dan aktifkan penyimpanan log;
- Tampal sedikit JSON dan klik "Format";
- Perhatikan sama ada permintaan XHR atau fetch baharu muncul, dan sama ada badannya mengandungi kandungan anda.
Untuk alat yang benar-benar setempat, langkah ini hanya menunjukkan permintaan aset statik. Sebaliknya, jika satu tindakan format menghasilkan POST /api/format
yang badannya ialah teks asal anda, maka data itu sudah meninggalkan pelayar tidak kira apa yang didakwa oleh halaman.
Setiap alat di laman ini ialah pelaksanaan front-end tulen, dan output binaan tidak mengandungi API pelayan. Selepas luar talian, muat semula yang menggunakan cache masih berfungsi, yang juga merupakan cara paling langsung untuk mengetahui sama ada sesuatu itu "sepenuhnya setempat".
Bolehkah saya masih menggunakannya luar talian?
Ya, dengan syarat halaman telah dimuatkan sekali.
Aset laman dimuat turun ke cache pelayar pada lawatan pertama, jadi walaupun tanpa rangkaian selepas itu, pemformatan, pengecilan, penukaran JSON5, dan pertanyaan JSONPath terus berfungsi. Hanya ciri yang bergantung pada rangkaian yang gagal, seperti menyemak versi baharu atau memuat turun pemasang desktop.
Ujian luar talian juga merupakan cara yang baik untuk mengesahkan bahawa "data tidak pernah meninggalkan": jika semuanya rosak sebaik sahaja anda memutuskan sambungan, setiap tindakan sedang berkomunikasi dengan pelayan.
Adakah sebarang data disimpan secara setempat? Bagaimana saya mengosongkannya?
Ya, tetapi hanya dalam localStorage pelayar semasa, dan hanya sejarah dan tetapan UI.
- Sejarah: 100 entri terakhir yang diproses dalam susunan kronologi terbalik, digunakan untuk memanggil semula data yang ditampal sebelum ini;
- Tetapan UI: tema, bahasa, keutamaan inden, dan sebagainya;
- Tidak disimpan: fail itu sendiri, rekod muat naik, atau apa-apa yang membawa identiti.
Terdapat tiga cara untuk mengosongkannya, daripada paling sempit kepada paling luas:
| Kaedah | Skop | Bila untuk digunakan |
|---|---|---|
| "Kosongkan sejarah" pada halaman sejarah | Memadam sejarah sahaja, mengekalkan tetapan | Selepas mengendalikan data sensitif |
Jalankan localStorage.clear() dalam alat pembangun |
Semua data setempat untuk laman ini | Mendiagnosis tetapan tidak normal |
| "Kosongkan data pelayaran" pelayar untuk laman ini | Kuki, cache dan storan bersama-sama | Sebelum menggunakan komputer kongsi |
Apabila mengendalikan data produksi pada komputer kongsi, kosongkan sejarah apabila anda selesai dan bukannya hanya menutup tab — localStorage tidak hilang apabila tab ditutup.
Mengapa aksara Cina bertukar menjadi \u4e2d\u6587?
Kerana ciri "escape" menukar aksara bukan ASCII kepada jujukan escape Unicode. Ini adalah tingkah laku yang disengajakan, bukan mojibake.
\u4e2d ialah titik kod aksara 中 (U+4E2D). Kedua-dua bentuk adalah sama secara semantik dalam JSON dan dihuraikan kepada rentetan yang sama:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
Bilakah escape diperlukan? Apabila membenamkan JSON ke dalam sistem lama yang hanya menerima ASCII, menulisnya ke dalam pengepala HTTP, atau menyarangkannya di dalam rentetan lain. Bilakah ia tidak diperlukan? Kebanyakan pengangkutan API dan storan fail tidak memerlukannya; menyimpan Cina secara langsung sebagai UTF-8 menjimatkan bait — satu aksara Cina ialah 3 bait, dan 6 bait apabila di-escape.
Jika anda melihat Cina bertukar menjadi \u4e2d, semak dahulu sama ada anda mengklik butang "Escape" dan bukannya mengesyaki bahawa pengekodan itu rosak.
2. Fail dan saiz
Apakah saiz fail yang disokong?
Tiada had keras pada bahagian pelayar; had sebenar datang daripada tiga tempat:
| Peringkat | Anggaran halangan | Simptom |
|---|---|---|
| Menampal ke dalam kotak teks | 1–5 MB | Input tersekat selepas menampal, kursor lambat |
JSON.parse |
50–100 MB | Benang utama menyekat selama beberapa saat, halaman tidak bertindak balas |
| Pemaparan pokok | 10k–20k nod | Bingkai terlepas semasa mengembangkan, menatal membeku |
Dengan kata lain, fail berukuran puluhan MB "boleh dihuraikan" tetapi "tidak boleh digunakan". Apabila anda benar-benar perlu memproses data sedemikian, langkah yang betul bukanlah mencari alat dalam talian yang lebih kuat, tetapi beralih kepada penstriman (lihat Soalan Lazim Prestasi dan Keselamatan).
Peraturan am: di bawah 2 MB alat dalam talian kekal lancar; 2–10 MB bermakna menerima satu atau dua kelewatan; melebihi 10 MB, utamakan skrip setempat.
Pelayar membeku selepas saya tampal. Apa sekarang?
Jangan muat semula dahulu — memuat semula menghilangkan kandungan dan anda perlu tampal semula. Selamatkannya dalam urutan ini:
- Tunggu 10–30 saat. Dalam kebanyakan kes benang utama sedang menghuraikan atau memaparkan dan akan pulih sendiri;
- Sebaik pulih, segera beralih ke paparan "Kecilkan" atau runtuhkan pokok untuk mengurangkan nod DOM;
- Salin kandungan ke fail setempat dan beralih ke baris arahan:
# Lihat struktur 100 baris pertama sahaja, untuk mengelakkan memuatkan semuanya
head -c 200000 data.json | jq . | head -n 100
# Kira entri dengan alat penstriman, tanpa memuatkannya ke dalam memori
jq -c '.items[]' data.json | wc -l
Lain kali anda menemui fail besar, jalankan wc -c dahulu untuk melihat kiraan bait, kemudian tentukan sama ada untuk menampalnya ke dalam pelayar.
Mengapa pemformatan tidak berubah selepas saya tampal?
Tiga punca biasa, disusun mengikut kekerapan:
- Input sudah dikecilkan dan tidak mempunyai ralat sintaks: pemformatan hanya melaraskan inden, jadi jika asal benar-benar dua baris, ia akan kekal dua baris selepas itu — baris baharu di dalam rentetan tidak dikembangkan;
- Kandungan bukan JSON: contohnya anda menampal literal objek JavaScript (kunci tanpa petikan, petikan tunggal), dan penghurai melaporkan ralat dan bukannya memformat;
- Anda mengklik butang yang salah: kecilkan dan format bergerak ke arah bertentangan, dan kecilkan membuang semua inden.
Cara mengetahui: lihat kiraan aksara di sudut kanan atas kawasan output. Selepas pemformatan kiraan sepatutnya bertambah (inden tambahan dan baris baharu); jika ia berkurang, anda telah menjalankan kecilkan.
3. Input dan output
Bagaimana saya mengeksport hasilnya ke fail?
Tiga cara, disusun mengikut kebolehpercayaan:
| Kaedah | Tindakan | Bila untuk digunakan |
|---|---|---|
| Butang muat turun | Klik "Muat turun" untuk menghasilkan fail .json |
Hasil besar yang perlu diarkibkan |
| Salin ke papan klip | Klik "Salin" | Hasil kecil yang anda tampal terus kembali ke dalam kod |
| Salin pilih semua manual | Pilih kawasan output dan tekan Ctrl/Cmd + C |
Pilihan terakhir apabila butang salin gagal |
Fail yang dimuat turun dikodkan UTF-8 tanpa BOM secara lalai. Ini penting: JSON dengan BOM rosak terus dalam banyak penghurai (lihat bahagian tentang BOM dalam Soalan Lazim Sintaks dan Format).
Adakah JSON5 dan JSONC disokong?
Ya, tetapi bezakan "penghuraian" daripada "output".
- Pada bahagian input anda boleh menampal JSON5 (petikan tunggal, kunci tanpa petikan, komen, koma mengekor, nombor heksadesimal) atau JSONC (komen sahaja);
- Pada bahagian output anda boleh menukar kepada JSON standard, atau menukar JSON standard kembali kepada JSON5 untuk memudahkan penyuntingan manual.
Sentiasa keluarkan JSON standard apabila merentasi sistem. JSON5 ialah dialek untuk manusia menulis konfigurasi; badan permintaan dengan
Content-Type: application/json yang mengandungi komen atau koma mengekor biasanya akan ditolak oleh pelayan.
4. Persekitaran dan keserasian
Adakah ia berfungsi pada telefon?
Ya. Antara muka mengalir semula menjadi satu lajur, dan pemformatan, pengecilan, perbandingan dan JSONPath semuanya dikekalkan.
Tetapi mengendalikan fail besar pada telefon ialah pengalaman yang kurang baik: papan kekunci lembut menutupi kandungan, memilih teks sukar, dan pelayar mungkin membuang halaman apabila anda bertukar aplikasi, kehilangan kandungan anda. Boleh diterima sebagai kecemasan, tetapi lakukan pada desktop dari hari ke hari.
Mengapa fail yang sama terbuka dalam Chrome tetapi memberi ralat dalam Safari?
Biasanya ia bukan perbezaan pelayar tetapi perbezaan pengekodan. Nyahpepijat dalam urutan ini:
- BOM: UTF-8 yang disimpan oleh Windows Notepad termasuk BOM, yang tidak ditoleransi oleh sesetengah penghurai;
- Akhir baris: mencampur CRLF dan LF tidak menjejaskan JSON itu sendiri, tetapi ia mengubah nombor baris ralat yang dilaporkan, jadi ia kelihatan seperti "kedudukan ralat salah";
- Aksara tidak kelihatan: teks yang disalin daripada halaman web mungkin mengandungi ruang lebar sifar (U+200B), tidak kelihatan kepada mata tetapi cukup untuk merosakkan padanan kunci.
Satu arahan dapat menembusinya:
# Lihat hex 16 bait pertama; EF BB BF di hadapan bermakna BOM hadir
head -c 16 data.json | xxd
5. Rujukan pantas
| Soalan | Kesimpulan |
|---|---|
| Adakah ia memuat naik data | Tidak, semuanya diproses secara setempat dalam pelayar, dan ia berfungsi luar talian |
| Di mana data disimpan | localStorage, sejarah dan tetapan sahaja, tidak pernah fail |
| Apakah saiz fail yang munasabah | Lancar di bawah 2 MB; melebihi 10 MB beralih ke baris arahan |
Cina bertukar menjadi \u |
Anda mengklik escape; setara tetapi lebih besar, dan biasanya tidak perlu |
| Ia membeku, apa sekarang | Tunggu pemulihan → runtuhkan pokok → salin keluar dan gunakan jq |
| Adakah eksport tanpa BOM | Ya, UTF-8 tanpa BOM |
| Adakah komen disokong | JSON5/JSONC pada bahagian input; keluarkan JSON standard |