Cach kiem tra JSON truc tuyen: huong dan cho lap trinh vien voi vi du thuc te

8 phút đọc

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:

KieuVi duGhi chu
String"xin chao"Luon dung dau nhay kep
Number42, 3.14, -7So nguyen hoac thap phan, khong dau nhay
Booleantrue, falseChu thuong, khong dau nhay
NullnullChu 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:

  1. Dau phay sau phan tu cuoi:
    {"items": [1, 2, 3,]} — Dau phay sau so 3 la khong hop le.
  2. Dau nhay don thay vi nhay kep:
    {'ten': 'Minh'} — Phai la {"ten": "Minh"}.
  3. Khoa khong co dau nhay:
    {tuoi: 30} — Phai la {"tuoi": 30}.
  4. Ky tu dieu khien khong duoc escape:
    Tab va xuong dong trong chuoi phai viet la \t va \n.
  5. Dau nhay khong duoc escape trong chuoi:
    Can escape dau nhay ben trong chuoi.
  6. Chu thich:
    JSON khong ho tro bat ky loai chu thich nao.
  7. NaN, Infinity hoac undefined:
    Cac gia tri JavaScript nay KHONG hop le trong JSON. Su dung null thay the.
  8. Gia tri thap luc phan:
    {"mau": 0xFF0000} khong hop le. Su dung {"mau": "#FF0000"}.
  9. Kieu hon hop trong mang co kieu:
    [1, "hai", true] la JSON hop le, nhung nhieu API mong doi mang dong nhat.
  10. 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 diemJSONXML
Doc duocNgan gon honDai dong hon
Kich thuocNho hon 30-50%Lon hon
Kieu du lieuString, Number, Boolean, Null, Array, ObjectTat ca la van ban
Chu thichKhong ho troHo tro
SchemaJSON SchemaXSD, DTD
Su dung chinhREST API, cau hinhSOAP, tai lieu, RSS
Phan tichJSON.parse() gocCan 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:

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. userName thay vi user_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.