Parser JSON menolak dokumen yang menyimpang sedikit pun. Penolakan itu bukan kerewelan: kalau parser menebak-nebak, dua program akan membaca dokumen yang sama dengan hasil berbeda. Karena itu pesan galatnya justru berguna — di dalamnya ada apa yang diharapkan parser, nomor baris, nomor kolom, dan posisi karakter.
| Kesalahan | Contoh | Pesan yang muncul |
|---|---|---|
| Koma menggantung sebelum kurung tutup | {"nama": "Ani",} | Illegal trailing comma before end of object |
| Tanda kutip tunggal | {'nama': 'Ani'} | Expecting property name enclosed in double quotes |
| Koma pemisah hilang | {"a": 1 "b": 2} | Expecting ',' delimiter |
| Nilai benar ditulis gaya Python | {"lunas": True} | Expecting value |
Posisi yang disebut parser adalah tempat parser menyerah, bukan selalu tempat kesalahan ditulis. Koma yang hilang di akhir baris dua dilaporkan di awal baris tiga, karena di sanalah parser menemukan sesuatu yang tidak diharapkan. Periksa akhir baris sebelumnya setiap kali pesan menyebut delimiter.
import json
try:
json.loads(teks)
except json.JSONDecodeError as e:
print(e.msg, e.lineno, e.colno, e.pos)Objek galatnya membawa keterangan terpisah: msg berisi keterangan singkat, lineno dan colno menunjuk baris dan kolom, dan pos menunjuk urutan karakter dari awal dokumen. Keterangan itu dipakai untuk menandai bagian yang salah di layar, bukan sekadar menampilkan pesan mentah kepada pemakai.