Cach kiem tra JSON truc tuyen: huong dan cho lap trinh vien voi vi du thuc te
Hoc cach kiem tra, dinh dang va debug JSON de dang. Cac loi thuong gap, so sanh voi XML, cac phuong phap tot nhat va cong cu truc tuyen mien phi.
JSON la gi va tai sao can kiem tra
JSON (JavaScript Object Notation) la dinh dang trao doi du lieu duoc su dung rong rai nhat trong phat trien web hien dai. Hau nhu tat ca cac REST API deu tra ve du lieu dang JSON, cac file cau hinh nhu package.json hay tsconfig.json su dung dinh dang nay, va cac co so du lieu nhu MongoDB luu tru tai lieu dang JSON.
Van de la chi mot ky tu sai vi tri (mot dau phay thua, mot dau nhay thieu, mot ngoac khong dong) se lam cho toan bo JSON khong hop le va gay loi trong ung dung cua ban. JSON khong hop le trong phan hoi API co the pha vo frontend. Mot tsconfig.json co loi cu phap se ngan TypeScript bien dich.
Kiem tra JSON truoc khi su dung giup tiet kiem hang gio debug. Voi cong cu kiem tra JSON NexTools, ban co the dan bat ky JSON nao, xem loi voi so dong chinh xac va tu dong nhan duoc dinh dang dep.
Cu phap JSON co ban: cac quy tac can biet
JSON co cac quy tac cu phap nghiem ngat. Vi pham bat ky quy tac nao deu tao ra JSON khong hop le:
- Cac khoa phai nam trong dau nhay kep:
{"ten": "Ana"}hop le.{ten: "Ana"}KHONG hop le. - Chuoi su dung dau nhay kep, khong bao gio dung nhay don:
"gia tri"hop le.'gia tri'KHONG hop le. - Khong duoc co dau phay cuoi:
{"a": 1, "b": 2}hop le.{"a": 1, "b": 2,}KHONG hop le. - Khong co chu thich: Ban khong the su dung // hay /* */ trong JSON.
- So khong co dau nhay:
{"tuoi": 25}hop le.{"tuoi": "25"}chay duoc nhung gia tri la chuoi, khong phai so.
Cac kieu du lieu duoc phep trong JSON:
| Kieu | Vi du | Ghi chu |
|---|---|---|
| String | "xin chao" | Luon dung dau nhay kep |
| Number | 42, 3.14, -7 | So nguyen hoac thap phan, khong dau nhay |
| Boolean | true, false | Chu thuong, khong dau nhay |
| Null | null | Chu thuong, khong dau nhay |
| Array | [1, 2, 3] | Cac gia tri cach nhau bang dau phay |
| Object | {"khoa": "gia_tri"} | Cap khoa-gia tri |
10 loi thuong gap nhat trong JSON
Day la nhung loi ban gap thuong xuyen nhat khi lam viec voi JSON:
- Dau phay sau phan tu cuoi:
{"items": [1, 2, 3,]}— Dau phay sau so 3 la khong hop le. - Dau nhay don thay vi nhay kep:
{'ten': 'Minh'}— Phai la{"ten": "Minh"}. - Khoa khong co dau nhay:
{tuoi: 30}— Phai la{"tuoi": 30}. - Ky tu dieu khien khong duoc escape:
Tab va xuong dong trong chuoi phai viet la\tva\n. - Dau nhay khong duoc escape trong chuoi:
Can escape dau nhay ben trong chuoi. - Chu thich:
JSON khong ho tro bat ky loai chu thich nao. - NaN, Infinity hoac undefined:
Cac gia tri JavaScript nay KHONG hop le trong JSON. Su dungnullthay the. - Gia tri thap luc phan:
{"mau": 0xFF0000}khong hop le. Su dung{"mau": "#FF0000"}. - Kieu hon hop trong mang co kieu:
[1, "hai", true]la JSON hop le, nhung nhieu API mong doi mang dong nhat. - BOM (Byte Order Mark):
Mot so trinh soan thao them cac byte vo hinh vao dau file lam cho JSON khong hop le. Luon luu dang UTF-8 khong co BOM.
Tat ca cac loi nay duoc tu dong phat hien boi cong cu kiem tra JSON, hien thi dong va vi tri chinh xac cua moi loi.
Cach dinh dang va nen JSON
JSON co the duoc trinh bay theo hai cach: dinh dang dep (pretty-print) de nguoi doc, va nen de truyen du lieu hieu qua.
JSON dinh dang dep:
{
"nguoi_dung": {
"ten": "Lan",
"tuoi": 28,
"hoat_dong": true
}
}
JSON nen (cung du lieu, it byte hon):
{"nguoi_dung":{"ten":"Lan","tuoi":28,"hoat_dong":true}}
Phien ban nen chiem it khong gian hon (ly tuong cho API va luu tru), trong khi phien ban dinh dang de doc va debug hon nhieu.
Trong JavaScript:
JSON.stringify(data, null, 2) // dinh dang voi 2 khoang trang
JSON.stringify(data) // nen
De nen cac file JSON lon, su dung cong cu nen ma xu ly JSON, CSS va JavaScript.
JSON vs XML: khi nao dung cai nao
Truoc JSON, XML la dinh dang trao doi du lieu chu dao. Ca hai van duoc su dung, nhung cho muc dich khac nhau:
| Dac diem | JSON | XML |
|---|---|---|
| Doc duoc | Ngan gon hon | Dai dong hon |
| Kich thuoc | Nho hon 30-50% | Lon hon |
| Kieu du lieu | String, Number, Boolean, Null, Array, Object | Tat ca la van ban |
| Chu thich | Khong ho tro | Ho tro |
| Schema | JSON Schema | XSD, DTD |
| Su dung chinh | REST API, cau hinh | SOAP, tai lieu, RSS |
| Phan tich | JSON.parse() goc | Can trinh phan tich XML |
Nam 2026, JSON thong tri trong phat trien web, API va ung dung di dong. XML van ton tai trong cac he thong doanh nghiep cu, nguon cap RSS/Atom va dinh dang tai lieu nhu DOCX.
Cong cu lam viec voi JSON hang ngay
Ngoai viec kiem tra, cac cong cu bo sung nay giup cong viec de dang hon:
- Cong cu kiem tra JSON: Kiem tra cu phap, hien thi loi voi so dong va tu dong dinh dang.
- Cong cu nen ma: Nen JSON bang cach xoa khoang trang va xuong dong.
- Bo ma hoa Base64: Ma hoa JSON thanh Base64 de truyen trong URL hoac HTTP header.
- Cong cu so sanh van ban: So sanh hai phien ban JSON de tim su khac biet.
Trong trinh duyet:
JSON.parse(jsonString)— Chuyen chuoi JSON thanh doi tuong JavaScript. Nem loi neu JSON khong hop le.JSON.stringify(obj, null, 2)— Chuyen doi tuong thanh JSON dinh dang.
JSON Schema: kiem tra cau truc, khong chi cu phap
Kiem tra cu phap chi xac nhan JSON co dung dinh dang. Nhung trong ung dung thuc te, ban cung can xac minh du lieu co dung cau truc.
Do la vai tro cua JSON Schema — mot tieu chuan de mo ta cau truc cua tai lieu JSON:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["ten", "tuoi", "email"],
"properties": {
"ten": { "type": "string", "minLength": 1 },
"tuoi": { "type": "integer", "minimum": 0, "maximum": 150 },
"email": { "type": "string", "format": "email" }
}
}
Voi schema nay, ban co the tu dong kiem tra rang moi JSON nguoi dung co ten (chuoi khong rong), tuoi (so nguyen tu 0 den 150) va email (dinh dang hop le). Cac thu vien nhu Ajv (JavaScript), jsonschema (Python) va Newtonsoft (.NET) trien khai kiem tra JSON Schema.
Cac phuong phap tot nhat khi lam viec voi JSON trong moi truong san xuat
Cac phuong phap nay giup ban tranh cac van de thuong gap trong du an thuc te:
- Luon kiem tra JSON tu nguon ben ngoai: Moi JSON nhan tu API, file nguoi dung tai len hoac webhook phai di qua
JSON.parse()trong try-catch truoc khi xu ly. - Su dung camelCase cho khoa: Day la quy uoc chuan trong JavaScript/TypeScript.
userNamethay viuser_name. - Tranh long nhau qua 3-4 cap: JSON long nhau sau kho doc, duyet va bao tri.
- Khong luu du lieu nhay cam trong JSON khong ma hoa: Token, mat khau va khoa rieng khong bao gio xuat hien trong JSON dang ro trong log hoac phan hoi API.
- Su dung null thay vi bo qua truong tuy chon:
{"tenDem": null}tot hon viec bo qua truong. - Xu ly loi phan tich mot cach nha nhan: Khong hien thi loi tho cua JSON.parse cho nguoi dung cuoi. Ghi log noi bo va hien thi thong bao than thien.
Thử công cụ này:
Mở công cụ→Câu hỏi thường gặp
Tai sao JSON cua toi hien 'Unexpected token' khi phan tich
Loi 'Unexpected token' co nghia la JSON.parse gap mot ky tu khong mong doi. Cac nguyen nhan pho bien nhat la: dau nhay don thay vi nhay kep, dau phay sau phan tu cuoi, chu thich trong JSON, hoac ky tu BOM vo hinh o dau file. Dan JSON vao cong cu kiem tra truc tuyen de xem chinh xac loi o dau.
Co the dung chu thich trong file JSON khong
Khong. Dac ta JSON khong cho phep bat ky loai chu thich nao (khong // cung khong /* */). Neu ban can JSON co chu thich, su dung cac dinh dang thay the nhu JSONC (VS Code dung trong settings.json), JSON5 hoac YAML.
Su khac biet giua JSON va doi tuong JavaScript
Doi tuong JavaScript co the co khoa khong co dau nhay, ham lam gia tri, undefined, Symbol va dau phay cuoi. JSON nghiem ngat hon: tat ca khoa phai co dau nhay kep, chi cho phep string, number, boolean, null, array va object lam gia tri, va khong cho phep dau phay cuoi hay chu thich.
Bao nhieu JSON la qua lon de xu ly trong trinh duyet
Hau het cac trinh duyet hien dai co the phan tich JSON len den 50-100 MB ma khong gap van de. Vuot qua muc do, viec phan tich co the chan luong chinh va dong bang giao dien. Doi voi JSON rat lon, su dung cac trinh phan tich luong nhu JSONStream hoac xu ly du lieu phia may chu.
Lam sao chuyen JSON sang CSV hoac nguoc lai
JSON sang CSV: neu JSON la mang cac doi tuong co cung khoa, cac khoa tro thanh cot va moi doi tuong tro thanh mot hang. CSV sang JSON: moi hang tro thanh mot doi tuong voi cac tieu de lam khoa. Co the lam bang JavaScript hoac voi cac cong cu truc tuyen.
JSON hay YAML tot hon cho file cau hinh
Tuy truong hop. JSON nghiem ngat hon (it loi mo ho), phan tich nhanh hon va la tieu chuan cho API. YAML de doc hon cho con nguoi, ho tro chu thich va pho bien trong DevOps (Docker Compose, GitHub Actions, Kubernetes). Cho cau hinh do nguoi chinh sua, YAML thuong tot hon. Cho du lieu truyen giua may, JSON la lua chon tieu chuan.