Bahasa Indonesia

Alat pengembang · JSON pemformat & validator

Cara kerja pencetakan cantik JSON: indentasi, spasi, dan urutan kunci

· Cara kerjanya

json alur kerja pengembang validasi

Cara kerja pencetakan cantik JSON: indentasi, spasi, dan urutan kunci diilustrasikan dengan token JSON dan batas validasi yang tepat
Ilustrasi vektor ToolAcre asli

Pencetakan cantik hanya mengubah sedikit spasi, namun orang khawatir hal itu mengubah data mereka. Posting ini menjelaskan apa saja yang boleh disentuh oleh formatter, bagaimana kedalaman indentasi diterapkan, dan apa yang terjadi pada urutan kunci.

Data yang sama, tiga tampilan berbeda

Data yang sama, tiga tampilan berbeda — muatan API yang ringkas dapat menempati satu garis, meluas dengan dua ruang di setiap kedalaman, atau menyebar lebih jauh dengan empat ruang. Kurung kurawal, tanda kurung, nama dan nilai menggambarkan struktur parsing yang sama di setiap versi. Hanya jeda baris dan jarak antar token struktural yang berbeda. Perbedaan tersebut penting ketika meninjau keluaran formatter: perbedaan yang lebih besar tidak secara otomatis mengubah data, karena indentasi sengaja mengubah banyak byte sambil membiarkan nilai yang dihasilkan tetap utuh.

ToolAcre menawarkan dua, empat, atau delapan spasi dan sebuah tab, lalu meneruskan indentasi yang dipilih ke JSON.stringify. Catatan penerapan bertingkat yang singkat membuat perbandingan menjadi jelas: wilayah tetap berada dalam urutan array yang sama, boolean tetap boolean, dan jumlah percobaan ulang tetap berupa angka.

Spasi putih mana yang dianggap tidak signifikan oleh JSON

Spasi mana yang JSON anggap tidak signifikan — RFC 8259 mengizinkan spasi, tab horizontal, pengumpan garis, dan pengangkutan kembali sebelum atau sesudah karakter struktural. Oleh karena itu, pemformat dapat menempatkan baris baru setelah `{`, spasi sebelum anggota yang disarangkan, dan baris baru lainnya sebelum `}` tanpa mengubah nilainya. Namun, spasi tidak dapat dibuang secara universal. Setelah tanda kutip ganda membuka sebuah string, setiap spasi biasa menjadi milik konten string tersebut dan harus bertahan dalam format yang persis seperti data.

Model mental yang paling aman adalah memisahkan batas token dari konten string. Di antara titik dua dan angka, spasi tambahan yang diperbolehkan adalah presentasi. Di antara huruf-huruf pesan yang dikutip, terdapat informasi. ToolAcre mem-parsing sumber terlebih dahulu dan membuat serialisasi nilai yang dihasilkan, jadi JSON.stringify memilih spasi baru di sekitar container sambil mempertahankan karakter string yang didekodekan.

Bagaimana pengaturan indentasi diterapkan

Bagaimana pengaturan indentasi diterapkan — setiap kontainer bertumpuk menambahkan satu salinan unit indentasi yang dipilih. Properti tingkat atas dimulai pada satu tingkat; sebuah properti di dalam objeknya dimulai dalam dua tingkat; sebuah objek di dalam array menambahkan level lain. Kurung tutup dan kurung kembali ke lekukan wadah pemiliknya. Oleh karena itu, lebarnya mencerminkan kedalaman struktural daripada panjang kunci, nilai, atau garis sebelumnya.

Spasi menciptakan lebar visual yang tetap di setiap editor, sementara tab memungkinkan setiap pemirsa memilih seberapa lebar tampilan satu tingkat. JavaScript juga membatasi indentasi JSON.stringify hingga sepuluh karakter spasi atau sepuluh karakter pertama dari string yang disediakan, meskipun ToolAcre hanya memperlihatkan preset praktis.

Apakah pemformatan mengubah urutan kunci?

Apakah pemformatan mengubah urutan kunci? — pencetakan cantik biasa tidak dengan sengaja mengurutkan anggota objek. Objek JSON secara konseptual merupakan koleksi tak berurutan, namun penguraian dan serialisasi JavaScript menggunakan aturan enumerasi properti yang ditentukan. Oleh karena itu, sebagian besar kunci non-integer muncul dalam urutan inputnya, sedangkan kunci seperti integer dapat dikeluarkan sebelum nama lain. Konsumen tidak boleh melekatkan makna bisnis pada posisi anggota, bahkan ketika formatter tampak mempertahankannya secara konsisten untuk objek yang sudah dikenal.

ToolAcre memisahkan indentasi dari penyortiran. Dengan penyortiran yang dinonaktifkan, ini akan membuat serialisasi objek yang diurai secara langsung. Dengan mengaktifkan penyortiran, ia secara rekursif membuat objek yang kuncinya disusun menurut abjad sebelum JSON.stringify dijalankan; array menjaga urutan elemennya karena menyusun ulang array akan mengubah maknanya. Opsi eksplisit ini membuat perbedaan yang dapat ditinjau: keluaran hanya spasi berasal dari pencetakan cantik, sedangkan perbedaan urutan kunci berasal dari permintaan organisasi kanonik.

Apa yang dapat diubah oleh pemformat parse-and-reserialise

Apa yang dapat diubah oleh pemformat parse-and-reserialise — nilai yang diurai tetap ada, namun ejaan aslinya tidak. Nomor yang ditulis sebagai `1.0` dapat ditampilkan sebagai `1`, dan `1e3` dapat ditampilkan sebagai `1000`. Karakter yang dapat dicetak yang di-escape dapat muncul kembali secara harfiah, sedangkan karakter literal dapat di-escape ketika serialisasi memerlukannya. Nama objek duplikat telah diciutkan selama penguraian, sehingga hanya nilai properti akhir yang tersisa untuk pemformat.

Transformasi ini menjelaskan mengapa keluaran yang diformat tidak boleh diperlakukan sebagai editor dokumen yang mempertahankan byte. Bandingkan nilai yang diuraikan ketika kesetaraan semantik adalah tujuannya, dan periksa perbedaan tekstual ketika notasi asli penting dalam alur kerja penandatanganan, hashing, atau audit. Bilangan bulat yang sangat besar memerlukan perhatian khusus karena bilangan JavaScript dapat kehilangan presisi sebelum serialisasi.

Contoh praktis: memformat objek bersarang

Contoh praktis: memformat objek bersarang — mulai dengan `{"service":{"regions":["sg","us"],"retry":{"count":3}}}` dan pilih dua spasi. Kurung kurawal akar pembuka diikuti oleh baris baru. `service` menerima dua spasi di depan, properti turunannya menerima empat spasi, elemen array menerima enam spasi, dan properti `count` bersarang juga menerima enam spasi. Setiap koma mengakhiri satu anggota yang dirender, dan setiap pembatas penutup sejajar dengan tingkat lekukan wadah pembukanya.

Mengalihkan nilai yang sama ke tab hanya akan mengubah awalan yang digunakan untuk setiap level. Mengaktifkan pengurutan kunci juga dapat menempatkan `regions` sebelum `retry`, namun lariknya masih terbaca `sg` lalu `us`. Tinjauan yang berguna memeriksa output dalam dua tahap: pertama konfirmasikan bahwa susunan susunan dan susunan mewakili nilai asli, lalu putuskan apakah spasi yang dipilih sesuai dengan repositori.

Hal ini tidak tercakup dalam hal ini

Apa yang tidak tercakup dalam hal ini — pengurutan kunci adalah pilihan normalisasi terpisah, dan minifikasi adalah operasi presentasi sebaliknya. Pencetakan cantik juga tidak pernah memberikan izin untuk menyusun ulang array: posisi array adalah data, jadi mengubahnya dapat mengubah prioritas, kronologi, atau perilaku program. Indentasi juga tidak membuat sumber yang tidak valid menjadi valid sebelum diurai. Komentar, koma tambahan, dan nilai khusus JavaScript harus diperbaiki atau ditangani oleh parser untuk format sebenarnya sebelum pemformat JSON yang ketat dapat membuat serialisasinya.

Skema kanonik JSON lebih dari sekadar pemformatan biasa dengan menentukan pengurutan anggota yang tepat, ejaan angka, dan pelolosan untuk tanda tangan atau hash deterministik. ToolAcre tidak mengklaim menerapkan standar kanonikalisasi tersebut. Ini menghasilkan keluaran lokal browser yang dapat dibaca menggunakan JSON.parse dan JSON.stringify, dengan penyortiran kunci rekursif opsional.

Kesimpulan: pencetakan cantik adalah transformasi spasi

Kesimpulan: pencetakan cantik adalah transformasi spasi — tujuannya adalah untuk mengekspos struktur tanpa mengubah nilai yang diwakili. Lebar lekukan memengaruhi keterbacaan, gangguan tinjauan, dan konvensi lokal, bukan validitas JSON. Spasi di dalam string tetap berupa data, urutan array tetap signifikan, dan penyortiran kunci objek memerlukan pilihan eksplisit terpisah. Mengingat batas-batas tersebut membuat perbedaan formatter lebih mudah untuk dinilai dan mencegah perubahan kosmetik agar tidak tertukar dengan pengeditan semantik.

Alat parsing dan serialisasi ulang masih dapat menormalkan angka dan menghindari ejaan karena alat ini bekerja berdasarkan nilai, bukan teks token asli. Tinjau kembali kasus-kasus ketika kesetiaan leksikal penting, dan hindari penggunaan keluaran cantik biasa sebagai bentuk kanonik untuk tanda tangan. Untuk konfigurasi sehari-hari dan pemeriksaan API, pilih indentasi yang digunakan tim Anda, biarkan penyortiran kecuali diinginkan, format secara lokal, dan validasi teks yang dikeluarkan.