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.
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.
| Jenis | Contoh | Peraturan |
|---|---|---|
| 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.5e3 | Perpuluhan sahaja: tanda tolak pilihan, tiada sifar di hadapan, pecahan dan eksponen pilihan. Tiada NaN atau Infinity. |
| true, false dan null | true | Huruf 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.
| Input | Masalah | JSON.parse |
|---|---|---|
{"a": 1,} | Koma di hujung | Ditolak |
{'a': 1} | Rentetan petikan tunggal | Ditolak |
{"a": 1 /* note */} | Komen | Ditolak |
{a: 1} | Kunci tanpa petikan | Ditolak |
{"n": NaN} | NaN bukan nombor JSON | Ditolak |
{"n": 012} | Sifar di hadapan | Ditolak |
{"n": 0x1F} | Nombor heksadesimal | Ditolak |
Escape dalam rentetan JSON
| Aksara | Ditulis 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.