Kesalahan Sintaks JSON Umum dan Cara Memperbaikinya Menggunakan Validator
Kesalahan JSON Umum
Aturan sintaks JSON yang ketat berarti bahwa bahkan satu karakter yang salah tempat dapat merusak seluruh dokumen. Memahami kesalahan JSON yang paling umum akan membantu Anda men-debug lebih cepat dan menghindari pengulangan kesalahan yang sama. Di bawah ini adalah masalah paling sering yang ditemui pengembang, dengan penjelasan dan perbaikan yang jelas untuk masing-masing.
1. Koma di Akhir
Kesalahan: Unexpected token di akhir objek atau array
Koma di akhir diizinkan dalam objek dan array JavaScript tetapi sangat dilarang dalam JSON.
JSON Tidak Valid:
{
"name": "Alice",
"age": 30,
}
Perbaikan: Hapus koma setelah item terakhir.
{
"name": "Alice",
"age": 30
}
Array dengan koma di akhir:
// Invalid
[1, 2, 3,]
// Valid
[1, 2, 3]
2. Tanda Kutip Hilang atau Salah di Sekitar Kunci
Kesalahan: Unexpected identifier atau Expected double-quoted property name
JSON mengharuskan semua kunci objek dibungkus dengan tanda kutip ganda. Tanda kutip tunggal dan kunci tanpa kutip tidak valid, meskipun berfungsi di JavaScript.
JSON Tidak Valid:
{
name: "Alice",
'occupation': "Engineer"
}
Perbaikan: Selalu bungkus kunci dengan tanda kutip ganda.
{
"name": "Alice",
"occupation": "Engineer"
}
3. Menggunakan Tanda Kutip Tunggal untuk Nilai String
Kesalahan: Unexpected identifier atau Unterminated string
Sama seperti kunci, nilai string harus menggunakan tanda kutip ganda dalam JSON. Tanda kutip tunggal tidak valid.
JSON Tidak Valid:
{ "greeting": 'Hello, world!' }
Perbaikan: Ganti tanda kutip tunggal dengan tanda kutip ganda.
{ "greeting": "Hello, world!" }
Tips: Jika string Anda berisi tanda kutip ganda, escape dengan backslash: "He said, \"Hello\"".
4. Karakter Khusus yang Tidak Di-escape
Kesalahan: Unexpected token atau Invalid character
Karakter tertentu harus di-escape dalam string JSON: tanda kutip ganda ("), backslash (\), dan karakter kontrol.
JSON Tidak Valid:
{
"path": "C:\Users\Documents\file.json",
"quote": "He said "hello""
}
Perbaikan: Escape backslash dan tanda kutip ganda dengan benar.
{
"path": "C:\\Users\\Documents\\file.json",
"quote": "He said \"hello\""
}
Daftar Lengkap Escape Sequence JSON
| Sequence | Mewakili |
|----------|-----------|
| \" | Tanda kutip ganda |
| \\ | Backslash |
| \/ | Garis miring depan |
| \b | Backspace |
| \f | Form feed |
| \n | Baris baru |
| \r | Carriage return |
| \t | Tab |
| \uXXXX | Karakter Unicode (misalnya, é untuk e) |
5. Format Numerik Tidak Valid
Kesalahan: Unexpected number atau Invalid number
JSON memiliki aturan khusus tentang bagaimana angka dapat diformat:
- Angka nol di depan tidak diizinkan (
01tidak valid) - Satu angka nol di depan hanya diizinkan untuk angka
0 - Angka tidak boleh memiliki titik di akhir (
10.tidak valid) - Format heksadesimal, oktal, dan biner tidak didukung
JSON Tidak Valid:
{
"invalid1": 01,
"invalid2": 10.,
"invalid3": 0xFF,
"invalid4": 1,000
}
Perbaikan:
{
"valid1": 1,
"valid2": 10.0,
"valid3": 255,
"valid4": 1000
}
6. Nilai Tidak Valid: undefined, NaN, Infinity
Kesalahan: Unexpected token untuk undefined, NaN, Infinity
JavaScript memiliki nilai yang tidak memiliki padanan JSON. Ini akan menyebabkan kesalahan parsing:
JSON Tidak Valid:
{
"undefinedVal": undefined,
"notANumber": NaN,
"infinity": Infinity
}
Perbaikan: Ganti dengan nilai JSON yang valid atau gunakan konvensi.
{
"undefinedVal": null,
"notANumber": null,
"infinity": 1.7976931348623157e+308
}
7. Koma Tambahan atau Koma Hilang
Kesalahan: Expected comma atau Unexpected token
Koma dalam JSON harus memisahkan setiap pasangan kunci/nilai dan elemen array, tetapi tidak boleh muncul setelah item terakhir.
Koma hilang (tidak valid):
{
"name": "Alice"
"age": 30
}
Perbaikan: Tambahkan koma yang hilang.
{
"name": "Alice",
"age": 30
}
8. Masalah Struktur Sangat Bersarang
Kesalahan: Maximum call stack size exceeded atau timeout parser
Meskipun bukan kesalahan sintaks, JSON yang sangat bersarang (10+ level) dapat menyebabkan masalah kinerja dan membuat debugging sangat sulit.
Struktur bermasalah:
{
"level1": {
"level2": {
"level3": {
"level4": {
"level5": {
"level6": {
"value": "too deep"
}
}
}
}
}
}
}
Pendekatan yang lebih baik: Ratakan struktur atau gunakan referensi.
{
"users": {
"alice": { "role": "admin" }
},
"permissions": {
"admin": ["read", "write", "delete"]
}
}
9. Kurung Kurawal Pembuka atau Penutup Hilang
Kesalahan: Expected ',' or '}' atau Unexpected end of JSON input
Kurung kurawal dan kurung siku yang tidak cocok adalah sumber umum kesalahan JSON, terutama dalam file JSON besar atau yang ditulis tangan.
JSON Tidak Valid:
{
"name": "Alice",
"items": [1, 2, 3
}
Perbaikan: Pastikan setiap { memiliki } yang cocok, dan setiap [ memiliki ] yang cocok.
{
"name": "Alice",
"items": [1, 2, 3]
}
Tips pro: Indentasi JSON Anda dengan benar untuk mencocokkan kurung pembuka dan penutup secara visual. Formatter JSON dapat melakukan ini secara otomatis.
Cara Men-debug Kesalahan JSON Secara Efektif
- Gunakan validator JSON -- Tempel JSON Anda ke validator JSON gratis untuk mendapatkan baris dan kolom tepat dari kesalahan pertama.
- Validasi secara bertahap -- Untuk file besar, validasi satu bagian pada satu waktu untuk mengisolasi kesalahan.
- Waspadai artefak copy-paste -- Karakter tak terlihat, tanda kutip cerdas, dan spasi non-breaking sering menyelinap dari pengolah kata atau halaman web.
- Periksa encoding karakter -- Pastikan file Anda disimpan sebagai UTF-8. Encoding lain dapat menghasilkan kesalahan tak terlihat.
- Gunakan linter -- Alat seperti ESLint dengan plugin
jsonmenangkap kesalahan JSON selama pengembangan.
Ingat: Parser JSON biasanya hanya melaporkan kesalahan sintaks pertama. Perbaiki itu, validasi ulang, dan ulangi hingga dokumen lolos. Alat JSON Formatter & Validator kami memberi Anda pesan kesalahan instan dan detail untuk mempercepat proses ini.