Tech Help
Ralat JSON Lazim: Koma Trailing, Tanda Petik, dan Unexpected Token
Baiki JSON tidak sah: koma trailing, petik tunggal, kunci tanpa petik, dan Unexpected token. Lihat mengapa JSON.parse gagal dan cara mengesahkan JSON.
Kebanyakan ralat JSON datang daripada peraturan sintaks ketat: koma trailing, petik tunggal, nama sifat tanpa petik, koma hilang, kurungan tak sepadan, escape salah, atau ulasan.
JSON kelihatan seperti objek JavaScript, tetapi lebih ketat. Nama sifat dan rentetan memerlukan petik berganda.
Jika anda nampak Unexpected token, aksara yang dilaporkan mungkin tempat penghurai berhenti—bukan semestinya tempat kesilapan asal bermula.
JSON anda ditanda tidak sah. Biasanya isu sintaks kecil, bukan format fail rosak. Tujuh kesilapan di bawah menyebabkan kebanyakan Unexpected token.
Mengapa JSON Mudah Rosak?
JSON ialah format data dengan sintaks ketat. Literal objek JavaScript boleh kelihatan serupa tetapi tetap JSON tidak sah. Dalam JSON piawai, nama sifat dan rentetan perlu petik berganda, koma trailing tidak dibenarkan, dan ulasan bukan sebahagian daripada format.
1. Koma Trailing
Koma tambahan selepas sifat terakhir ialah masalahnya. JSON piawai tidak membenarkannya.
Tidak sah
{
"name": "Alex",
"age": 30,
}
Sah
{
"name": "Alex",
"age": 30
}
Peraturan sama terpakai pada tatasusunan. Buang koma selepas item terakhir.
Tidak sah
[
"red",
"green",
]
Sah
[
"red",
"green"
]
2. Petik Tunggal, Bukan Petik Berganda
JavaScript sering menerima petik tunggal. JSON tidak. Nama sifat dan nilai rentetan mesti menggunakan petik berganda.
Tidak sah
{
'name': 'Alex'
}
Sah
{
"name": "Alex"
}
3. Nama Sifat Tanpa Petik
Dalam JavaScript kadangkala anda boleh menulis name tanpa petik. Dalam JSON setiap nama sifat mesti rentetan berpetik berganda.
Tidak sah
{
name: "Alex",
age: 30
}
Sah
{
"name": "Alex",
"age": 30
}
4. Koma Hilang Antara Nilai
Sifat dan item tatasusunan memerlukan koma di antaranya. Penghurai mungkin melaporkan Unexpected token pada petik atau kurungan seterusnya, bukan pada koma yang hilang itu sendiri.
Tidak sah
{
"name": "Alex"
"age": 30
}
Sah
{
"name": "Alex",
"age": 30
}
5. Kurungan Kurang atau Lebih
Objek menggunakan { }. Tatasusunan menggunakan [ ]. JSON bersarang sering gagal apabila ] hilang, } berlebih, atau kedua-duanya tertukar. Kira pasangan buka dan tutup.
Tidak sah
{
"items": [1, 2
}
Sah
{
"items": [1, 2]
}
6. Jujukan Escape Tidak Sah
Dalam rentetan JSON, condong belakang memulakan escape. Jujukan seperti ", \ dan \n adalah sah. Laluan Windows yang ditulis C:\Users tidak: \U bukan escape JSON yang sah. Gandakan condong belakang, atau penghurai berhenti pada aksara itu.
Tidak sah
{"file":"C:\Users\Alex"}
Sah
{"file":"C:\\Users\\Alex"}
7. Ulasan Dalam JSON
JSON piawai tiada ulasan. Sesetengah alat konfigurasi menerima // atau /* */ (JSONC, JSON5, dan seumpamanya). Itu bukan JSON piawai, dan JSON.parse akan menolaknya.
Tidak sah
{
// user name
"name": "Alex"
}
Apa Maksud Unexpected Token?
Penghurai menemui aksara yang tidak dibenarkan pada kedudukan itu. Tempat yang dilaporkan ialah tempat bacaan berhenti. Jika anda tertinggal koma lebih awal, ralat mungkin menunjuk petik sifat seterusnya. Lafaz berbeza mengikut runtime; jangan jangka setiap pelayar mencetak ayat yang sama.
Apa Maksud Unexpected End of JSON Input?
Teks tamat sebelum nilai lengkap. Punca lazim termasuk } atau ] hilang, input terpenggal, badan kosong, atau respons API terputus. Ia bukan satu pepijat tunggal.
Mengapa JSON.parse() Gagal?
JSON.parse() hanya menerima teks JSON yang sah. Ini berjaya:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Ini gagal, kerana petik tunggal bukan JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Mesej ralat yang tepat bergantung pada runtime JavaScript. Anggap mesej sebagai petunjuk, kemudian periksa koma, petik, dan kurungan berhampiran kedudukan itu.
Literal objek JavaScript boleh kelihatan seperti { name: 'Alex' }. JSON yang sah mesti kelihatan seperti { "name": "Alex" }: nama dan rentetan berpetik berganda, tiada koma trailing, tiada ulasan.
- Teks JSON
- Penghurai membaca token
- Data sah atau Unexpected token
Cara Cari Ralat JSON Dengan Cepat
Kerja mengikut tertib ini. Jangan mula dengan menulis semula seluruh fail.
- Jalankan JSON melalui pengesah.
- Baca ralat pertama yang dilaporkan.
- Lihat sedikit sebelum kedudukan yang dilaporkan.
- Periksa koma, terutamanya yang trailing dan yang hilang.
- Periksa petik: petik berganda sahaja.
- Padankan { } dan [ ].
- Periksa escape condong belakang dalam rentetan.
- Buang ulasan jika anda perlukan JSON ketat.
Peta pantas pembaikan lazim:
| Masalah | Baiki |
|---|---|
| Koma trailing | Padam koma selepas item terakhir. |
| Petik tunggal | Guna petik berganda untuk nama dan rentetan. |
| Kunci tanpa petik | Balut nama sifat dengan petik berganda. |
| Koma hilang | Letak koma antara sifat atau item tatasusunan. |
| Kurungan hilang | Tutup setiap pasangan { } dan [ ]. |
| Escape tidak sah | Guna escape yang sah, atau gandakan condong belakang dalam laluan. |
| Ulasan | Buang // dan /* */ untuk JSON piawai. |
Sahkan dan Format JSON dalam Pelayar
NEXNARA Format dan bandingkan JSON boleh memeriksa JSON pada peranti ini.
Anda boleh mengesahkan, merapikan dengan 2 ruang, 4 ruang, atau tab, minify, membandingkan dua dokumen (JSON Diff), dan membuka fail .json. Penghurai menggunakan JSON.parse dalam pelayar, bukan eval.
Dokumen lebih besar daripada 5 MB mungkin terasa perlahan. Teks lebih besar daripada 15 MB tidak diproses dalam pelayar, supaya halaman kekal responsif.
Pemprosesan JSON itu sendiri berlaku dalam pelayar anda. Teks tidak dihantar ke pelayan NEXNARA untuk alat ini. Iklan dan ciri tapak lain masih menggunakan rangkaian; itu berasingan daripada pemprosesan.
Perlu memeriksa JSON tidak sah? Buka Format dan bandingkan JSON dan tampal teks.
FAQ
Mengapa JSON saya berkata Unexpected token?
Penghurai menemui aksara yang tidak dibenarkan di tempat itu. Kesilapan sebenar—selalunya koma hilang atau petik tunggal—mungkin duduk tepat sebelum kedudukan itu.
Adakah koma trailing dibenarkan dalam JSON?
Tidak. JSON piawai tidak membenarkan koma selepas sifat atau item tatasusunan terakhir. Literal objek JavaScript sering membenarkannya.
Bolehkah JSON menggunakan petik tunggal?
Tidak. Nama sifat dan rentetan mesti menggunakan petik berganda.
Bolehkah JSON mengandungi ulasan?
Tidak dalam JSON piawai. Sesetengah alat menerima JSONC atau JSON5 dengan ulasan; JSON.parse tetap akan menolaknya.
Mengapa JSON.parse() gagal?
Rentetan itu bukan JSON yang sah. Punca lazim ialah koma trailing, petik tunggal, kunci tanpa petik, ulasan, atau nilai terpenggal. Mesej yang tepat bergantung pada runtime.
Bagaimana saya semak sama ada JSON sah?
Tampal ke pengesah seperti Format dan bandingkan JSON, atau panggil JSON.parse dalam konsol. Jika penghurai membuang ralat, teks itu bukan JSON yang sah.