tooly

Format dan validasi JSON

Tempel JSON untuk merapikannya dengan indentasi pilihan Anda, atau minify untuk produksi. Kesalahan sintaks dilaporkan dengan baris dan kolom yang tepat. Bekerja sepenuhnya offline di browser Anda.

Semuanya berjalan di browser Anda — tidak ada yang dikirim

Cara menggunakan

  1. 1

    Tempel JSON Anda ke kotak.

  2. 2

    Klik Format untuk merapikan atau Minify untuk menghapus spasi.

  3. 3

    Salin hasilnya atau unduh sebagai file .json.

Dari mana JSON yang berantakan berasal

Sebagian besar JSON yang Anda temui dalam praktik ditulis oleh program untuk program lain, jadi datang sebagai satu baris panjang: respons API yang disalin dari tab network browser, payload webhook di file log, nilai konfigurasi yang tersimpan di kolom database. Membaca satu baris berisi 4.000 karakter untuk mencari satu field bersarang itu lambat dan rawan kesalahan. Pretty-print menaruh setiap kunci di barisnya sendiri dan mengindentasi setiap level, sehingga strukturnya terlihat sekilas.

Kebalikannya sama seringnya. Sebelum menempel JSON ke variabel lingkungan, query string, fixture tes, atau pesan obrolan, Anda sering ingin JSON sepadat mungkin. Minify menghapus setiap spasi dan baris baru yang berada di luar nilai string; file konfigurasi berindentasi yang biasa menyusut 20 hingga 40 persen, tergantung seberapa dalam tingkat bersarangnya.

Apa yang dilakukan formatter pada data Anda

Input diurai dengan parser JSON bawaan browser dan ditulis kembali dengan indentasi yang Anda pilih: 2 spasi, 4 spasi, atau tab. Minify memakai jalur yang sama tanpa indentasi sama sekali. Karena dokumen dibangun ulang dari nilai hasil penguraian, bukan diedit sebagai teks, beberapa detail bisa berubah, dan ada baiknya tahu yang mana:

  • Penulisan angka dinormalisasi. 1.0 menjadi 1, 1e3 menjadi 1000, dan -0 menjadi 0. Nilainya sama, cara penulisannya tidak.
  • Bilangan bulat yang sangat besar kehilangan presisi. JavaScript menyimpan angka sebagai float 64 bit, yang hanya akurat hingga 9.007.199.254.740.991. ID 19 digit seperti 12345678901234567890 kembali sebagai 12345678901234567000. Jika data Anda memuat ID gaya Snowflake, bigint database, atau jumlah pembayaran dalam satuan terkecil pada skala itu, bandingkan hasilnya sebelum dipakai.
  • Escape Unicode didekode. "caf\u00e9" ditulis kembali sebagai "café". Keduanya JSON yang valid dan berarti string yang sama.
  • Kunci duplikat menyatu. Jika sebuah objek berisi kunci yang sama dua kali, hanya nilai terakhir yang bertahan. Standar JSON tidak mendefinisikan perilaku untuk duplikat, dan sebagian besar parser berperilaku seperti ini.
  • Kunci berbentuk bilangan bulat pindah ke depan. Kunci yang tampak seperti bilangan bulat non-negatif, seperti "2" atau "10", ditempatkan paling depan dengan urutan menaik, mendahului semua kunci lain. Ini aturan objek JavaScript, bukan aturan JSON. Kunci teks biasa mempertahankan urutan aslinya.

Semua ini tidak berpengaruh untuk payload API biasa, tetapi penting jika Anda akan meng-commit file yang sudah diformat dan menginginkan diff seminimal mungkin.

Membaca posisi kesalahan

Saat penguraian gagal, alat ini menjalankan pemindai kecilnya sendiri untuk menemukan karakter pertama yang tidak bisa melanjutkan dokumen yang valid, lalu melaporkannya sebagai baris dan kolom.

Titik yang dilaporkan adalah tempat parser menyerah, yang tidak selalu sama dengan tempat kesalahan dibuat:

  • Koma di akhir pada [1, 2, ] dilaporkan di kurung penutup, karena di situ diharapkan sebuah nilai.
  • Koma yang hilang di antara dua properti dilaporkan di awal kunci kedua.
  • Kurung kurawal atau kurung siku penutup yang hilang dilaporkan di akhir input, kadang ratusan baris di bawah masalah sebenarnya. Cari objek atau array terakhir yang dibuka.
  • String tanpa tanda kutip penutup dilaporkan di akhir barisnya, karena baris baru mentah tidak diizinkan di dalam string JSON. Posisi yang sama muncul untuk teks multi-baris yang ditempel ke sebuah nilai; baris baru di sana harus ditulis sebagai \n.

Jika inputnya sebenarnya bukan JSON melainkan literal objek JavaScript, YAML, atau dict Python yang dicetak dengan tanda kutip tunggal, kesalahan akan muncul di baris pertama atau kedua. Format-format itu terlihat mirip tetapi tidak bisa saling menggantikan.

Memilih indentasi

  • 2 spasi adalah default di sebagian besar tooling JavaScript, file package.json, dan banyak panduan gaya. Data yang bersarang dalam tidak akan bergeser melewati tepi kanan layar.
  • 4 spasi sesuai dengan hasil json.dumps(indent=4) di Python dan lebih mudah dibaca untuk dokumen yang dangkal.
  • Tab memungkinkan setiap pembaca memilih lebar visualnya di editor dan menghasilkan file sedikit lebih kecil daripada 4 spasi.

Untuk file yang disimpan di repositori, ikuti apa pun yang sudah dipakai proyek; mencampur gaya membuat setiap diff penuh perubahan yang tidak perlu.

Langkah berikutnya dengan data yang sudah diformat

Begitu strukturnya terbaca, tugas lain menjadi lebih mudah. Untuk menyebarkan array record ke spreadsheet, konversikan dengan JSON ke CSV. Untuk melihat dengan tepat apa yang berubah di antara dua versi payload, format keduanya dengan indentasi yang sama lalu bandingkan di bandingkan teks; format yang identik berarti diff hanya menampilkan perubahan sungguhan. Semuanya terjadi di halaman, jadi token dan data pribadi dalam payload tetap di perangkat Anda.

FAQ

Apakah JSON saya diunggah?

Tidak. Parsing dan pemformatan berjalan di browser Anda, jadi kunci API atau data pribadi di JSON tidak pernah keluar dari komputer Anda.

Kenapa JSON saya dibilang tidak valid?

Penyebab umum: koma di akhir, tanda kutip tunggal alih-alih ganda, komentar, atau kunci tanpa tanda kutip. Pesan kesalahan menunjukkan baris dan kolomnya.

Apakah urutan kunci dipertahankan?

Ya, kunci tetap dalam urutan seperti di input, kecuali kunci berbentuk bilangan bulat seperti "2" atau "10", yang dipindahkan JavaScript ke depan dengan urutan menaik.

Seberapa besar file yang bisa diformat?

Beberapa megabyte tidak masalah. File yang sangat besar mungkin butuh sesaat karena seluruh dokumen diparsing di memori.

Alat terkait