UltKit

Pemformat & Pengesah JSON

Tampal JSON untuk mencantikkan formatnya, meminifykannya atau mengisih kuncinya. Jika JSON tidak dapat dihuraikan, pemformat menunjukkan baris dan lajur tempat penghurai berhenti, dengan penunjuk di bawah masalah itu. Koma yang tertinggal dalam respons 3,000 baris boleh ditemui dalam beberapa saat.

Output

0 aksara · 0 perkataan · 0 baris

0 aksara · 0 perkataan · 0 baris

Berjalan sepenuhnya dalam tab pelayar ini. Teks Anda tidak pernah dimuat naik atau disimpan.

Jenis nilai JSON

RFC 8259 membenarkan nilai ini sahaja. Objek dan tatasusunan boleh bersarang; yang lain ialah daun.

JenisContohPeraturan
Objek{"id": 7, "tags": ["a"]}Kunci mestilah rentetan bertanda petikan berganda; ahli dipisahkan dengan koma tanpa koma di hujung.
Tatasusunan[1, "two", null]Senarai tersusun bagi sebarang nilai, jenis bercampur dibenarkan.
Rentetan"caf\u00e9 \"quoted\""Petikan berganda sahaja; aksara kawalan mesti di-escape; escape \u menggunakan empat digit heks.
Nombor-12.5e3Perpuluhan sahaja: tanda tolak pilihan, tiada sifar di hadapan, pecahan dan eksponen pilihan. Tiada NaN atau Infinity.
true, false dan nulltrueHuruf kecil, tanpa petikan.

Perkara yang ditolak oleh penghurai

Setiap input di bawah dihantar kepada JSON.parse yang sama seperti yang digunakan pemformat semasa halaman ini dibina.

InputMasalahJSON.parse
{"a": 1,}Koma di hujungDitolak
{'a': 1}Rentetan petikan tunggalDitolak
{"a": 1 /* note */}KomenDitolak
{a: 1}Kunci tanpa petikanDitolak
{"n": NaN}NaN bukan nombor JSONDitolak
{"n": 012}Sifar di hadapanDitolak
{"n": 0x1F}Nombor heksadesimalDitolak

Escape dalam rentetan JSON

AksaraDitulis dalam JSON
Petikan berganda"\""
Garis condong belakang"\\"
Suapan baris"\n"
Tab"\t"
Carriage return"\r"
Aksara kawalan U+0001"\u0001"
Garis condong hadapan (escape pilihan)"/"
Huruf bukan ASCII (tidak perlu escape)"é"

Peraturan yang dipatuhi dokumen JSON yang sah

JSON ditakrifkan oleh RFC 8259 (pada dasarnya sama dengan ECMA-404). Satu dokumen ialah satu nilai: objek, tatasusunan, rentetan, nombor, true, false atau null. Kunci objek sentiasa berupa rentetan dalam tanda petikan berganda. Rentetan hanya menggunakan petikan berganda dan mesti melepaskan (escape) tanda petikan, garis condong belakang serta setiap aksara kawalan di bawah U+0020; oleh itu, tab dan pemisah baris dalam rentetan ditulis sebagai \t dan \n. RFC 8259 juga mewajibkan UTF-8 untuk JSON yang dipertukarkan antara sistem.

Nombor ditulis dalam perpuluhan: tiada sifar di hadapan, tiada heksadesimal, tiada NaN atau Infinity, dan tiada tanda tambah di hadapan. Format ini tidak mempunyai komen dan tiada koma di hujung. Dua peraturan terakhir inilah punca kebanyakan ralat sebenar, kerana literal objek JavaScript, JSON5 dan banyak fail konfigurasi membenarkan kedua-duanya. Jadual rujukan di bawah dihasilkan dengan memasukkan setiap kesilapan biasa ke dalam penghurai yang sama seperti yang digunakan oleh pemformat.

Cantikkan, minify, isih

Pretty-print menambah pemisah baris dan inden supaya struktur mudah dibaca; dua ruang ialah gaya paling biasa dalam projek JavaScript, empat ruang ialah pilihan lazim dengan json.dumps(indent=4) Python, dan tab membolehkan setiap pembaca memilih lebarnya. Minify membuang setiap ruang yang tidak penting, sekali gus mengecilkan muatan API dan membolehkan dokumen muat dalam satu baris untuk log atau pemboleh ubah persekitaran.

Isih kunci menyusun ahli setiap objek mengikut abjad, secara rekursif. Objek JSON tidak bertertib mengikut takrifan, jadi pengisihan tidak mengubah makna, tetapi ia menjadikan dua dokumen daripada sistem berbeza jauh lebih mudah dibandingkan. Perlu diingat bahawa penghuraian menukar nombor kepada double JavaScript: integer melebihi 2^53 (9,007,199,254,740,992), seperti sesetengah ID pangkalan data, kehilangan ketepatan apabila diformat semula, jadi simpan nilai tersebut sebagai rentetan.

Daripada JSON ke format lain

Dokumen yang telah diformat lebih mudah dibaca, tetapi kadangkala anda memerlukannya dalam bentuk lain. Tatasusunan objek boleh menjadi hamparan dengan JSON ke CSV, dan penukar data memindahkan keseluruhan fail antara JSON, XML, YAML dan CSV.

Soalan lazim

Mengapakah pemformat menolak JSON saya yang mengandungi komen?
JSON piawai tidak mempunyai sintaks komen; RFC 8259 sengaja tidak memasukkannya. Buang komen tersebut, atau kekalkan fail sebagai JSONC atau JSON5 jika alat yang membacanya menyokong format itu.
Apakah maksud "Unexpected token" dalam ralat JSON?
Penghurai menemui aksara yang tidak boleh muncul pada kedudukan itu, seperti petikan tunggal, koma di hujung sebelum } atau kunci tanpa petikan. Baris dan lajur yang dipaparkan menunjuk pada aksara tersebut.
Adakah mengisih kunci mengubah data saya?
Tidak. Susunan ahli objek tidak membawa makna dalam JSON, jadi dokumen yang diisih adalah setara. Susunan tatasusunan bermakna dan tidak pernah diubah.
Mengapakah nombor panjang berubah selepas diformat?
JavaScript menyimpan nombor sebagai float 64-bit, yang hanya mewakili integer dengan tepat sehingga 2^53. ID yang lebih besar dibundarkan semasa dihuraikan; hantarkannya sebagai rentetan untuk mengekalkan setiap digit.
Bolehkah saya memformat fail JSON tanpa perlu menampalnya?
Buka fail dalam mana-mana editor teks, pilih semua dan tampal di sini. Fail yang sangat besar, berpuluh megabait, mungkin memperlahankan tab semasa kawasan teks memaparkannya.