Langsung ke konten

Format JSON

Ubah JSON satu baris panjang menjadi sesuatu yang bisa Anda baca, atau padatkan kembali. Angka besar tetap utuh setiap digitnya — hal yang diam-diam salah di kebanyakan formatter online. Tidak ada yang disimpan.

  • Tidak pernah disimpan
  • Tanpa antre, tanpa menunggu
  • Tanpa daftar, tanpa watermark
Indentasi
Hasil format

JSON yang sudah diformat muncul di sini.

Cara kerjanya

1

Tempel JSON Anda

Atau letakkan file .json. Apa pun yang Anda tempel tetap berada di halaman ini — tidak ada yang disimpan.

2

Pilih indentasi

Dua spasi, empat, tab, atau di-minify menjadi satu baris. Pilihan Anda diingat untuk lain kali.

3

Salin atau unduh

Salin hasilnya, atau simpan sebagai file. Jika JSON-nya rusak, Anda mendapatkan baris, kolom, dan karakternya.

Apa yang tetap utuh setelah diurai dan dicetak ulang

Pemformatan adalah proses mengurai lalu mencetak ulang, dan angka adalah satu-satunya bagian yang dibawa persis seperti teks yang Anda ketik. Itu lebih luas dari kasus bilangan bulat besar yang dihitung di banner: setiap angka yang penulisan terpendeknya di JavaScript berbeda dari tulisan Anda akan dikeluarkan ulang dari sumbernya, jadi 1.10 tetap mempertahankan nol di belakangnya, 1e5 tetap dalam bentuk eksponen, dan nol negatif tetap negatif. Hanya bilangan bulat yang tidak aman yang dihitung dalam peringatan, karena pada angka-angka itulah alternatifnya adalah kerusakan diam-diam, bukan sekadar penulisan yang dirapikan.

String tidak dibawa sebagai teks apa adanya. Escape di-decode saat dokumen dibaca dan ditulis ulang saat dicetak, jadi \u0041 kembali sebagai A dan garis miring yang di-escape kembali tanpa escape. Nilainya identik tetapi byte-nya tidak, dan ini hanya penting dalam satu situasi — tetapi di situasi itu sangat penting: jika ada sesuatu di tahap berikutnya yang membandingkan dua file JSON byte demi byte, menjalankan salah satunya lewat formatter bukanlah operasi tanpa efek.

Dua perilaku di tingkat objek perlu diketahui sebelum Anda memercayai hasil format ulang. Key duplikat diselesaikan diam-diam, yang terakhir menang, persis seperti parser bawaan browser menyelesaikannya — dokumen dengan dua field “id” terformat tanpa keluhan dan kembali dengan satu saja, tanpa ada yang memberi tahu bahwa yang lain pernah ada. Dan urutan key mengikuti urutan file Anda hanya untuk key yang bukan bilangan bulat: objek berisi “1”, “2”, dan “name” kembali dengan key angka di depan, dalam urutan numerik, karena begitulah JavaScript sendiri mengurutkan properti objek. Key biasa tetap dalam urutan yang Anda tulis.

Jika Anda butuh hal lain

Jika yang Anda punya adalah tsconfig.json, konfigurasi ESLint, atau file pengaturan VS Code, halaman ini akan menunjuk komentar dan koma di akhirnya alih-alih memformat dengan mengabaikannya — itu jawaban yang benar untuk alat JSON, tetapi alat yang salah untuk file Anda. File-file itu adalah JSONC, dan editor Anda sudah bisa mengurainya; di command line, json5 dan dasel sama-sama bisa membacanya tanpa berpura-pura itu JSON.

Untuk apa pun di luar mengatur ulang indentasi, formatter adalah jenis alat yang salah. jq melakukan dalam satu ekspresi apa yang tidak bisa dikendalikan kotak tempel: jq -S . mengurutkan key setiap objek sehingga dua respons bisa dibandingkan, jq 'del(.token)' membuang sebuah field sebelum Anda menunjukkan payload ke siapa pun, dan jq -c memadatkan array objek menjadi JSON Lines yang dibutuhkan pipeline. jq juga membaca file, bukan clipboard, dan itu menentukan begitu dokumennya lebih besar dari yang nyaman Anda seleksi.

Pertanyaan yang sering diajukan

Apakah JSON saya disimpan di suatu tempat?

Tidak. Tidak ada panggilan ke server dan tidak ada pencatatan log, dan tidak ada yang disimpan. Anda bisa memutus koneksi internet setelah halaman dimuat dan alat ini tetap berfungsi. Hal ini lebih penting daripada kelihatannya: yang biasa ditempel orang ke formatter online adalah respons API, file konfigurasi, dan payload error, dan semua itu sering membawa token, data pelanggan, dan hostname internal.

Kenapa alat ini menjaga angka besar tetap persis, sementara formatter lain tidak?

Karena hampir semua formatter lain diam-diam merusaknya. Angka JavaScript adalah float 64-bit, jadi hanya bisa menyimpan bilangan bulat hingga 9.007.199.254.740.991 secara persis. Apa pun yang lebih besar — ID postingan Twitter/X, snowflake Discord, nomor rekening bank, key database 64-bit — kehilangan digit terakhirnya begitu melewati `JSON.parse`. Angkanya masih terlihat wajar, dan justru itulah bahayanya: 7205759403792793600 diam-diam berubah menjadi 7205759403792793000. Halaman ini mempertahankan digit yang Anda tempel secara persis, dan memberi tahu berapa banyak angka yang harus dilindunginya.

Apa yang dilakukannya pada file yang rusak?

Alat ini memberi tahu di mana masalahnya, bukan sekadar bahwa ada masalah. Anda mendapatkan nomor baris, kolom, baris itu sendiri dengan tanda caret di bawah karakter yang bermasalah, dan penjelasan dengan bahasa sederhana — “koma di akhir sebelum }” alih-alih “Unexpected token”. Koma di akhir, tanda kutip tunggal, key tanpa tanda kutip, dan baris baru yang tidak di-escape di dalam string adalah empat penyebab sebagian besar JSON rusak, dan masing-masing disebutkan secara spesifik.

Apakah alat ini mendukung JSON Lines / NDJSON?

Ya, dan bentuknya tetap dipertahankan. JSON Lines adalah satu nilai JSON lengkap per baris — format yang dipakai log dan ekspor data — dan merapikannya menjadi banyak baris justru merusak hal yang membuatnya berguna. Formatnya terdeteksi otomatis, setiap baris diformat sendiri-sendiri, dan tata letak satu nilai per baris tetap dipertahankan.

Bisakah alat ini memperbaiki JSON yang berisi komentar atau koma di akhir?

Alat ini akan menunjuknya dengan tepat, tetapi tidak akan menerimanya diam-diam. Komentar dan koma di akhir bukan JSON — itu JSON5 atau JSONC, yang memang dipakai file konfigurasi seperti tsconfig.json. Formatter yang diam-diam menerimanya akan memberi Anda file yang kemudian ditolak parser Anda, dan itu lebih buruk daripada error di sini.

Apakah ada batas ukuran?

Memori yang tersedia, bukan batas yang kami tetapkan. Dokumen berukuran beberapa megabyte langsung terformat; dokumen yang sangat besar dibatasi oleh seberapa banyak yang bisa ditampung sekaligus, bukan oleh apa pun di sisi kami.

Apakah minify mengubah data saya?

Tidak. Minify hanya menghapus spasi di antara token — tidak pernah mengubah urutan key, tidak pernah mengubah format angka, tidak pernah membuang apa pun. Hasilnya diurai menjadi nilai yang persis sama, hanya lebih kecil.

Perlu diketahui: Pemformatannya persis — dokumen diurai lalu dicetak ulang, jadi apa pun yang bisa diurai akan keluar kembali. Hanya JSON ketat: komentar, koma di akhir, dan key tanpa tanda kutip ditolak, bukan diperbaiki diam-diam, karena memperbaikinya berarti menebak. Dokumen yang sangat besar ditampung dua kali di memori selama pemformatan.

Pasang alat ini di situs Anda

Gratis untuk blog, halaman kelas, atau artikel bantuan apa pun. Tempel satu potong kode dan pengunjung Anda bisa langsung memakainya di halaman Anda.