UltKit

Pemformat & Validator JSON

Tempel JSON untuk merapikan, me-minify, atau mengurutkan key-nya. Jika gagal diurai, pemformat menunjukkan baris dan kolom tempat parser berhenti, dengan penunjuk di bawah masalahnya, sehingga koma yang hilang dalam respons 3.000 baris bisa ditemukan dalam hitungan detik.

Output

0 karakter · 0 kata · 0 baris

0 karakter · 0 kata · 0 baris

Berjalan sepenuhnya di tab browser ini. Teks Anda tidak pernah diunggah atau disimpan.

Jenis nilai JSON

RFC 8259 hanya mengizinkan nilai-nilai ini. Object dan array dapat bersarang; selebihnya adalah leaf (nilai akhir).

JenisContohAturan
Object{"id": 7, "tags": ["a"]}Key harus berupa string berkutip ganda; anggota dipisahkan koma tanpa koma di akhir.
Array[1, "two", null]Daftar berurutan berisi nilai apa pun, jenis campuran diperbolehkan.
String"caf\u00e9 \"quoted\""Hanya kutip ganda; karakter kontrol harus di-escape; escape \u menggunakan empat digit hex.
Number-12.5e3Hanya desimal: tanda minus opsional, tanpa nol di depan, pecahan dan eksponen opsional. Tidak ada NaN atau Infinity.
Literal true, false, nulltrueHuruf kecil, tanpa tanda kutip.

Yang ditolak parser

Setiap input di bawah ini dijalankan dengan JSON.parse yang sama dengan yang dipakai pemformat saat halaman ini dibangun.

InputMasalahJSON.parse
{"a": 1,}Koma di akhirDitolak
{'a': 1}String berkutip tunggalDitolak
{"a": 1 /* note */}KomentarDitolak
{a: 1}Key tanpa tanda kutipDitolak
{"n": NaN}NaN bukan number JSONDitolak
{"n": 012}Nol di depanDitolak
{"n": 0x1F}Bilangan heksadesimalDitolak

Escape dalam string JSON

KarakterDitulis dalam JSON
Tanda kutip ganda"\""
Garis miring terbalik"\\"
Line feed (baris baru)"\n"
Tab"\t"
Carriage return"\r"
Karakter kontrol U+0001"\u0001"
Garis miring (escape opsional)"/"
Huruf non-ASCII (tidak perlu escape)"é"

Aturan yang diikuti dokumen JSON yang valid

JSON dispesifikasikan oleh RFC 8259 (secara substansi identik dengan ECMA-404). Sebuah dokumen adalah satu nilai: object, array, string, number, true, false, atau null. Key object selalu berupa string dalam tanda kutip ganda. String hanya memakai kutip ganda dan wajib meng-escape tanda kutip, garis miring terbalik, dan setiap karakter kontrol di bawah U+0020; karena itu tab dan jeda baris di dalam string ditulis sebagai \t dan \n. RFC 8259 juga mewajibkan UTF-8 untuk JSON yang dipertukarkan antarsistem.

Number berbentuk desimal: tanpa nol di depan, tanpa heksadesimal, tanpa NaN atau Infinity, dan tanpa tanda plus di depan. Format ini tidak mengenal komentar maupun koma di akhir. Dua aturan terakhir itulah penyebab sebagian besar error di dunia nyata, karena literal object JavaScript, JSON5, dan banyak file konfigurasi mengizinkan keduanya. Tabel referensi di bawah dibuat dengan memasukkan setiap kesalahan umum ke parser yang sama dengan yang dipakai pemformat.

Rapikan, minify, urutkan JSON

Merapikan (pretty-print) menambahkan jeda baris dan indentasi agar strukturnya mudah dibaca; dua spasi adalah gaya paling umum di proyek JavaScript, empat spasi adalah pilihan lazim dengan json.dumps(indent=4) di Python, dan tab membiarkan setiap pembaca memilih lebarnya sendiri. Minify menghapus setiap spasi yang tidak bermakna, sehingga payload API menjadi lebih kecil dan dokumen muat dalam satu baris untuk log atau variabel lingkungan.

Urutkan key menyusun anggota setiap object secara alfabetis, secara rekursif. Object JSON menurut definisinya tidak berurutan, sehingga pengurutan tidak mengubah makna, tetapi membuat dua dokumen dari sistem berbeda jauh lebih mudah dibandingkan. Perlu diingat bahwa penguraian mengubah number menjadi double JavaScript: bilangan bulat di atas 2^53 (9.007.199.254.740.992), seperti sebagian ID database, kehilangan presisi saat diformat ulang, jadi simpan nilai seperti itu sebagai string.

Dari JSON ke format lain

Dokumen yang sudah diformat lebih mudah dibaca, tetapi kadang Anda membutuhkannya dalam bentuk lain. Array berisi object menjadi spreadsheet dengan JSON ke CSV, dan konverter data memindahkan seluruh file antara JSON, XML, YAML, dan CSV.

Pertanyaan yang sering diajukan

Mengapa pemformat JSON menolak JSON saya yang berisi komentar?
JSON standar tidak memiliki sintaks komentar; RFC 8259 sengaja menghilangkannya. Hapus komentarnya, atau simpan file sebagai JSONC atau JSON5 jika alat yang membacanya mendukung format tersebut.
Apa arti "Unexpected token" pada error JSON?
Parser menemukan karakter yang tidak boleh muncul di posisi itu, seperti tanda kutip tunggal, koma di akhir sebelum }, atau key tanpa tanda kutip. Baris dan kolom yang ditampilkan menunjuk ke karakter tersebut.
Apakah mengurutkan key JSON mengubah data saya?
Tidak. Urutan anggota object tidak memiliki makna dalam JSON, sehingga dokumen yang diurutkan tetap setara. Urutan array bermakna dan tidak pernah diubah.
Mengapa angka panjang di JSON berubah setelah diformat?
JavaScript menyimpan angka sebagai float 64-bit, yang hanya dapat merepresentasikan bilangan bulat secara persis hingga 2^53. ID yang lebih besar dibulatkan saat diurai; kirim sebagai string agar setiap digit tetap utuh.
Bisakah saya memformat file JSON alih-alih menempelkannya?
Buka file di editor teks apa pun, pilih semua, lalu tempel di sini. File yang sangat besar, puluhan megabyte, dapat membuat tab melambat saat textarea menampilkannya.