JSON formatter dan validator

Acrafto Team Pengembang
Diperbarui
Menunggu input. Tempel JSON di atas atau letakkan file .json di sini.

Tempel JSON apa pun ke kolom di atas, dan JSON formatter dan validator ini langsung memeriksanya saat Anda mengetik. Input yang valid dirapikan dengan indentasi pilihan Anda atau di-minify menjadi satu baris. Input yang tidak valid mendapat pesan kesalahan yang tepat dengan nomor baris dan kolom, potongan kode yang disorot, dan untuk kesalahan yang umum, perbaikan sekali klik. Semua proses berjalan di browser Anda, jadi respons API, file konfigurasi, dan data ekspor tidak pernah keluar dari komputer Anda.

Apa yang dilakukan JSON formatter ini

  • Rapikan JSON (beautify) dengan 2 spasi, 4 spasi, atau tab. Hasilnya mempertahankan urutan kunci asli kecuali Anda mencentang Urutkan kunci.
  • Minify JSON dengan menghapus semua spasi dan baris baru. Info ukuran di bawah hasil menunjukkan berapa byte yang Anda hemat.
  • Validasi JSON secara langsung sesuai RFC 8259, standar JSON yang berlaku saat ini. Baris status berubah hijau begitu dokumen sudah benar.
  • Perbaiki kesalahan umum secara otomatis: koma berlebih, tanda kutip tunggal, kunci tanpa tanda kutip, komentar, literal gaya Python True, None, dan NaN, serta angka seperti .5 atau +1.
  • Muat file dengan tombol Buka file atau dengan menyeret file .json ke kolom input, lalu unduh hasilnya atau kirim kembali ke input untuk diproses sekali lagi.

Mengapa pesan kesalahan lebih penting daripada warna merah

Sebagian besar validator JSON online hanya memberi tahu bahwa ada yang salah. Browser juga tidak jauh lebih baik: JSON.parse di Chrome melaporkan Unexpected token } in JSON at position 148, sedangkan Firefox menulis expected property name or '}', dan keduanya tidak menunjukkan baris mana yang harus diperiksa. Alat ini memiliki parser sendiri yang mengingat posisi awal setiap token. Saat parser berhenti, Anda mendapatkan baris dan kolom, potongan baris tersebut dengan tanda caret di bawah karakter yang bermasalah, serta petunjuk dalam bahasa sehari-hari seperti Kemungkinan ada koma yang hilang di antara dua properti. Tombol Lompat ke kesalahan memindahkan kursor langsung ke posisi tersebut di input.

Kesalahan yang paling sering kami temukan pada dokumen yang ditempel:

InputMasalahJSON yang benar
{'name': 'Ada'}tanda kutip tunggal{"name": "Ada"}
{name: "Ada"}kunci tanpa tanda kutip{"name": "Ada"}
[1, 2, 3,]koma berlebih[1, 2, 3]
{"a": 1 "b": 2}koma hilang{"a": 1, "b": 2}
{"ok": True}literal Python{"ok": true}
{"x": 007}nol di depan angka{"x": 7} atau {"x": "007"}
// commentkomentartidak diizinkan dalam JSON

Tombol Perbaiki otomatis memperbaiki semua kesalahan di atas kecuali koma yang hilang dan nol di depan angka. Perbaikannya sengaja dibuat hati-hati. Alat ini tidak pernah menebak di mana koma yang hilang seharusnya berada, karena koma di tempat yang salah mengubah makna data, dan 007 bisa berarti angka 7 atau sebuah kode. Dalam kasus seperti itu, Anda mendapatkan posisi kesalahan yang tepat.

Angka besar, urutan kunci, dan hal lain yang biasanya rusak

Banyak formatter bekerja dengan memanggil JSON.parse lalu JSON.stringify. Proses bolak-balik itu diam-diam merusak data. ID Twitter atau Snowflake seperti 1234567890123456789 melampaui batas 2^53 untuk angka JavaScript dan kembali sebagai 1234567890123456800. Nilai 1.0 berubah menjadi 1, dan 1e3 menjadi 1000. Formatter ini tidak pernah mengubah angka menjadi floating point. Setiap literal disalin persis seperti yang ditulis, sehingga hasilnya adalah format ulang yang setia dari input, bukan tafsiran ulang. Hal yang sama berlaku untuk escape sequence di dalam string: "\u00e9" tetap "\u00e9" dan tidak diubah menjadi "é".

Urutan kunci juga dipertahankan. Spesifikasi JSON menyatakan bahwa anggota objek tidak berurutan, tetapi file konfigurasi, fixture pengujian, dan code review jauh lebih mudah dibaca jika urutannya tetap. Jika Anda lebih suka bentuk kanonis, misalnya untuk membandingkan dua respons API di alat diff, aktifkan Urutkan kunci dan kedua dokumen akan menampilkan propertinya secara alfabetis di setiap tingkat nesting.

Format JSON atau minify JSON: kapan memakai yang mana

JSON yang dirapikan ditujukan untuk manusia. Gunakan saat Anda memeriksa respons API, menulis package.json, tsconfig.json, atau dokumen OpenAPI, atau saat menyimpan fixture di repositori yang diff-nya sebaiknya menampilkan satu perubahan per baris. Dua spasi adalah konvensi di dunia JavaScript, empat spasi umum dipakai di proyek Python dan .NET, dan tab memungkinkan setiap pembaca memilih lebar indentasinya sendiri.

JSON yang di-minify ditujukan untuk mesin. Whitespace biasanya mencakup 20 sampai 40 persen dari dokumen yang diformat, sehingga menghapusnya memperkecil payload yang dikirim ke browser, nilai yang disimpan di Redis atau di kolom database, serta atribut data-* yang disematkan di HTML. Gzip menutup sebagian selisih itu, tetapi versi yang di-minify tetap menghasilkan file terkompresi yang lebih kecil. Info ukuran di bawah hasil menunjukkan selisih persisnya untuk dokumen Anda.

Bekerja dengan JSON di terminal dan editor

Untuk file yang Anda proses berulang kali, alat command line lebih cepat daripada situs web mana pun. jq . file.json merapikan JSON, jq -c . file.json melakukan minify, dan python -m json.tool file.json berfungsi di mana saja Python terpasang. Visual Studio Code memformat JSON dengan Shift+Alt+F dan memvalidasinya terhadap skema jika Anda menambahkan properti $schema. Halaman ini untuk kasus lainnya: respons yang disalin dari tab Network, baris log, potongan konfigurasi dari wiki, atau pemeriksaan cepat di komputer yang tidak mengizinkan Anda memasang apa pun.

Alat terkait di situs ini: encoder dan dekoder Base64 mendekode bagian payload dari JWT, yaitu JSON yang dikodekan dalam Base64url. Konverter timestamp Unix mengubah angka createdAt yang muncul di sebagian besar respons API menjadi tanggal yang mudah dibaca, dan dekoder UUID menampilkan versi serta stempel waktu pengenal dalam data Anda. Utilitas lainnya ada di kategori alat untuk pengembang.

Pertanyaan yang sering diajukan

Apakah JSON saya diunggah ke server? Tidak. Parsing, pemformatan, dan perbaikan berjalan sepenuhnya di browser Anda dengan JavaScript. Setelah halaman dimuat, Anda bisa memutuskan koneksi internet dan alat ini tetap berfungsi. Tidak ada yang dicatat atau disimpan.
Mengapa validator menolak komentar padahal editor saya menerimanya? Komentar sengaja dihapus dari JSON oleh penciptanya, Douglas Crockford, agar format ini tidak dipakai untuk direktif parser. File seperti tsconfig.json atau .vscode/settings.json secara teknis adalah JSONC, superset yang didukung oleh editor. Parser ketat di API, database, dan sebagian besar bahasa pemrograman menolaknya. Tombol perbaikan menghapus komentar sehingga hasilnya valid di mana saja.
Bisakah saya memformat JSON Lines atau beberapa objek sekaligus? Satu dokumen JSON berisi tepat satu nilai. Jika Anda menempelkan beberapa objek yang dipisahkan koma atau baris baru, validator berhenti pada nilai tambahan yang pertama. Bungkus objek-objek tersebut dengan kurung siku agar menjadi array, lalu format. Tombol perbaikan tidak melakukannya secara otomatis karena tidak bisa mengetahui apakah input memang dimaksudkan sebagai satu dokumen.
Berapa ukuran maksimumnya? Tidak ada batas tetap. Dokumen berukuran beberapa megabyte selesai diformat jauh di bawah satu detik di laptop. Penyorotan sintaks dimatikan di atas sekitar 400 kB agar halaman tetap responsif, tetapi menyalin dan mengunduh tetap berfungsi.
Apakah mengurutkan kunci mengubah data? Tidak. Objek dalam JSON secara definisi tidak berurutan, lihat artikel JSON di Wikipedia, sehingga parser membaca dokumen yang sudah diurutkan dan dokumen aslinya sebagai nilai yang sama. Array tidak pernah diurutkan ulang karena urutannya adalah bagian dari data.
Bagaimana cara melakukan escape JSON agar bisa disisipkan dalam string? Lakukan minify terlebih dahulu, lalu escape setiap backslash dan tanda kutip ganda. Banyak bahasa menyediakan cara langsung untuk ini: JSON.stringify(JSON.stringify(obj)) di JavaScript atau json.dumps(json.dumps(obj)) di Python menghasilkan string JSON yang berisi teks JSON tersebut.

Saya akan menghargai jika Anda dapat membagikan halaman-halaman ini dengan teman, mem-bookmark, atau membuat tautan ke halaman ini. Terima kasih! 🙏