Bahasa Melayu

Alat pembangun · JSON pemformat & pengesah

Cara JSON pencetakan cantik berfungsi: inden, ruang kosong dan susunan kunci

· Bagaimana ia berfungsi

json aliran kerja pembangun pengesahan

Cara JSON pencetakan cantik berfungsi: inden, ruang kosong dan susunan kekunci yang digambarkan dengan token JSON dan sempadan pengesahan yang tepat
Ilustrasi vektor ToolAcre asal

Pencetakan cantik sahaja mengubah ruang kosong yang tidak ketara, namun orang ramai bimbang ia mengubah data mereka. Siaran ini menerangkan perkara yang dibenarkan untuk disentuh oleh pemformat, cara kedalaman inden digunakan dan perkara yang berlaku pada susunan kunci.

Data yang sama, tiga rupa yang berbeza

Data yang sama, tiga rupa berbeza — muatan API padat boleh menduduki satu baris, berkembang dengan dua ruang pada setiap kedalaman atau merebak lebih jauh dengan empat. Tanda kurung, kurungan, nama dan nilai menerangkan struktur yang dihuraikan yang sama dalam setiap versi. Sahaja pemisah baris dan jarak antara token struktur berbeza. Perbezaan itu penting apabila menyemak output pemformat: perbezaan yang lebih besar bukanlah perubahan data secara automatik, kerana lekukan sengaja mengubah banyak bait sambil membiarkan nilai yang terhasil tetap utuh.

ToolAcre menawarkan dua, empat atau lapan ruang dan tab, kemudian hantar lekukan yang dipilih kepada JSON.stringify. Rekod penggunaan bersarang pendek menjadikan perbandingan itu jelas: wilayah kekal dalam susunan tatasusunan yang sama, boolean kekal boolean dan kiraan cuba semula kekal nombor.

Ruang kosong yang JSON anggap tidak penting

Ruang kosong yang JSON anggap tidak penting — RFC 8259 membenarkan ruang, tab mendatar, suapan baris dan pengangkutan kembali sebelum atau selepas aksara struktur. Oleh itu, pemformat boleh meletakkan baris baharu selepas `{`, ruang sebelum ahli bersarang dan baris baharu lain sebelum `}` tanpa mengubah nilai. Walau bagaimanapun, ruang kosong tidak boleh dibuang secara universal. Sebaik sahaja petikan berganda membuka rentetan, setiap ruang biasa tergolong dalam kandungan rentetan itu dan mesti bertahan dalam pemformatan sama seperti data.

Model mental yang paling selamat ialah memisahkan sempadan token daripada kandungan rentetan. Antara titik bertindih dan nombor, ruang kosong tambahan yang dibenarkan ialah pembentangan. Di antara huruf-huruf mesej yang dipetik, ia adalah maklumat. ToolAcre menghuraikan sumber terlebih dahulu dan menyerikan nilai yang terhasil, jadi JSON.stringify memilih ruang kosong baharu di sekeliling bekas sambil mengekalkan aksara rentetan yang dinyahkod.

Cara tetapan inden digunakan

Cara tetapan inden digunakan — setiap bekas bersarang menambah satu salinan unit inden yang dipilih. Hartanah peringkat teratas bermula satu peringkat dalam; harta di dalam objeknya bermula dua peringkat dalam; objek di dalam tatasusunan menambah tahap lain. Pendakap dan kurungan penutup kembali ke lekukan bekas yang memilikinya. Oleh itu, lebar mencerminkan kedalaman struktur dan bukannya panjang kunci, nilai atau baris sebelumnya.

Spaces mencipta lebar visual tetap dalam setiap editor, manakala tab membolehkan setiap penonton memilih sejauh mana lebar satu tahap muncul. JavaScript juga mengehadkan lekukan JSON.stringify kepada sepuluh aksara ruang atau sepuluh aksara pertama rentetan yang dibekalkan, walaupun ToolAcre sahaja mendedahkan pratetap praktikal.

Adakah pemformatan mengubah susunan kunci?

Adakah pemformatan mengubah susunan kunci? — percetakan cantik biasa tidak sengaja menyusun ahli objek. Objek JSON ialah koleksi tidak tertib secara konsep, tetapi JavaScript penghuraian dan penyirian menggunakan peraturan penghitungan harta yang ditentukan. Oleh itu, kebanyakan kunci bukan integer muncul dalam susunan input mereka, manakala kunci seperti integer boleh dipancarkan sebelum nama lain. Pengguna tidak boleh melampirkan makna perniagaan pada kedudukan ahli, walaupun pemformat nampaknya mengekalkannya secara konsisten untuk objek biasa.

ToolAcre memisahkan lekukan daripada mengisih. Dengan pengisihan dilumpuhkan, ia menyerikan objek yang dihuraikan secara langsung. Dengan pengisihan didayakan, ia secara rekursif membina objek yang kuncinya disusun mengikut abjad sebelum JSON.stringify dijalankan; tatasusunan mengekalkan susunan elemen mereka kerana menyusun semula tatasusunan akan mengubah maknanya. Pilihan eksplisit ini membuat perbezaan yang boleh disemak: keluaran ruang kosong sahaja berasal daripada cetakan cantik, manakala perbezaan susunan kunci datang daripada meminta organisasi berkanun.

Perkara yang boleh diubah oleh pemformat hurai dan siri semula

Perkara yang boleh diubah oleh pemformat huraikan dan siri semula — nilai yang dihuraikan kekal, tetapi ejaan asalnya tidak. Nombor yang ditulis sebagai `1.0` boleh kembali sebagai `1` dan `1e3` boleh kembali sebagai `1000`. Watak boleh cetak yang dilepaskan boleh muncul semula secara literal, manakala watak literal boleh dilepaskan apabila penyirian memerlukannya. Nama objek pendua telah pun runtuh semasa penghuraian, jadi sahaja nilai sifat akhir kekal tersedia kepada pemformat.

Transformasi ini menerangkan sebab output yang diformatkan tidak boleh dianggap sebagai editor dokumen yang memelihara bait. Bandingkan nilai yang dihuraikan apabila kesetaraan semantik adalah matlamat dan periksa perbezaan teks apabila notasi asal penting kepada aliran kerja tandatangan, pencincangan atau pengauditan. Integer yang sangat besar patut diberi perhatian khusus kerana nombor JavaScript boleh kehilangan ketepatan sebelum penyirian.

Contoh yang berfungsi: memformat objek bersarang

Contoh yang berjaya: memformat objek bersarang — bermula dengan `{"service":{"regions":["sg","us"],"retry":{"count":3}}}` dan pilih dua ruang. Pendakap akar pembukaan diikuti dengan baris baru. `service` menerima dua ruang utama, sifat anaknya menerima empat, elemen tatasusunan menerima enam dan harta `count` bersarang juga menerima enam. Setiap koma mengakhiri satu ahli yang diberikan dan setiap pembatas penutup sejajar dengan tahap lekukan bekas pembukaannya.

Menukar nilai yang sama kepada tab menukar sahaja awalan yang digunakan untuk setiap peringkat. Menghidupkan pengisihan kunci juga boleh meletakkan `regions` sebelum `retry`, tetapi tatasusunan masih berbunyi `sg` kemudian `us`. Semakan berguna menyemak output dalam dua laluan: mula-mula sahkan bahawa susunan bersarang dan tatasusunan mewakili nilai asal, kemudian memutuskan sama ada ruang kosong yang dipilih sesuai dengan repositori.

Perkara ini tidak meliputi

Perkara ini tidak meliputi — pengisihan kunci ialah pilihan penormalan yang berasingan, dan pemindahan ialah operasi pembentangan yang bertentangan. Pencetakan cantik juga tidak pernah memberikan kebenaran untuk menyusun semula tatasusunan: kedudukan tatasusunan ialah data, jadi mengubahnya boleh mengubah keutamaan, kronologi atau tingkah laku program. Lekukan juga tidak menjadikan sumber tidak sah sah sebelum menghuraikan. Ulasan, koma belakang dan nilai JavaScript sahaja mesti dibetulkan atau dikendalikan oleh penghurai untuk format sebenar mereka sebelum pemformat JSON yang ketat boleh menyirikannya.

Skim JSON Canonical pergi lebih jauh daripada pemformatan biasa dengan mentakrifkan pesanan ahli yang tepat, ejaan nombor dan pelepasan aksara untuk tandatangan atau cincang yang menentukan. ToolAcre tidak mendakwa melaksanakan piawaian kanonik sedemikian. Ia menghasilkan output pelayar-tempatan yang boleh dibaca menggunakan JSON.parse dan JSON.stringify, dengan pengisihan kunci rekursif pilihan.

Bawa pulang: percetakan cantik ialah transformasi ruang kosong

Bawa pulang: percetakan cantik ialah transformasi ruang kosong — tujuannya adalah untuk mendedahkan struktur tanpa mengubah nilai yang diwakili. Lebar lekukan menjejaskan kebolehbacaan, kebisingan ulasan dan konvensyen tempatan, bukan kesahihan JSON. Ruang kosong di dalam rentetan kekal sebagai data, susunan tatasusunan kekal penting dan pengisihan kunci objek memerlukan pilihan eksplisit yang berasingan. Mengingati sempadan tersebut menjadikan perbezaan pemformat lebih mudah untuk dinilai dan menghalang perubahan kosmetik daripada dikelirukan dengan pengeditan semantik.

Alat huraikan dan siri semula masih boleh menormalkan nombor dan melepaskan ejaan kerana ia berfungsi daripada nilai dan bukannya teks token asal. Semak kes tersebut apabila kesetiaan leksikal penting, dan elakkan menggunakan keluaran cantik biasa sebagai bentuk kanonik untuk tandatangan. Untuk konfigurasi harian dan pemeriksaan API, pilih lekukan yang digunakan oleh pasukan anda, biarkan pengisihan melainkan ia dikehendaki, format secara setempat dan sahkan teks yang dipancarkan.