JSON Toolkit

JSON, JSON5 và JSONC

Kết luận: Các siêu ngôn ngữ nghiêm ngặt theo thứ tự: JSONC thêm chú thích; JSON5 thêm nháy đơn, khóa không nháy, dấu phẩy cuối và số thập lục phân. Chọn sai sẽ làm hỏng API, chứ không phải trình soạn thảo.

Người mớiĐọc khoảng 4 phútXuất bản 2026-10-30Cập nhật 2026-10-30
So sánh tính năng giữa JSON, JSON5 và JSONC

Tóm lại: hãy dùng JSON chuẩn bất cứ khi nào dữ liệu đi qua ranh giới hệ thống, chỉ dùng JSONC cho cấu hình cục bộ do con người chỉnh sửa; cân nhắc JSON5 khi bạn cần nháy đơn, dấu phẩy cuối hay khóa không nháy, nhưng hãy xác nhận trình nạp hỗ trợ nó trước.

Nói một dòng: JSONC là JSON cộng chú thích; JSON5 là JSON cộng thói quen JavaScript.

Ma trận tính năng

Tính năng JSON JSONC JSON5
Chuỗi nháy kép ✅ ✅ ✅
Chuỗi nháy đơn ❌ ❌ ✅
Khóa không nháy ❌ ❌ ✅
Chú thích dòng // ❌ ✅ ✅
Chú thích khối /* */ ❌ ✅ ✅
Dấu phẩy cuối ❌ ❌ ✅
Số thập lục phân 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
Chuỗi nhiều dòng ❌ ❌ ✅
Bộ phân tích chuẩn đọc được ✅ ❌ ❌

Lưu ý rằng JSONC chỉ giải quyết chú thích. Nhiều người tưởng "JSON cho phép chú thích" cũng cho phép dấu phẩy cuối; tsconfig.json vẫn lỗi với một dấu phẩy như vậy.

Mỗi loại dùng để làm gì

JSON — trao đổi dữ liệu. API, hàng đợi, cột JSON trong cơ sở dữ liệu, log. Mọi thứ máy với máy.

JSONC — cấu hình trình soạn thảo. VS Code tự phân tích những tệp này, nên JSON.parse không bao giờ thấy chúng. Không có RFC; đây là quy ước thực tế do Microsoft dẫn dắt.

JSON5 — một siêu ngôn ngữ dễ dãi cho con người. Mục tiêu là "cấu hình trông giống object literal JavaScript". Phù hợp nhất với tệp .json5 được công cụ build nạp; cú pháp rộng nhất và hỗ trợ công cụ hẹp nhất.

Cách chọn

Tình huống Chọn
Thân yêu cầu hoặc phản hồi JSON, không có lựa chọn khác
Cột JSON trong MySQL / PostgreSQL JSON, các hàm của chúng không nhận gì khác
Cấu hình dự án cần giải thích JSONC nếu được hỗ trợ, nếu không thì YAML
Bạn muốn sự dễ dãi kiểu JS JSON5, sau khi xác nhận trình nạp hỗ trợ
Người không phải kỹ sư sẽ chỉnh sửa YAML, thụt lề dễ hơn ngoặc

Một cái bẫy dễ gặp

Phân tích một tệp JSONC như JSON nghiêm ngặt sẽ tạo lỗi chỉ vào chú thích:

SyntaxError: Unexpected token / in JSON at position 42

Trước khi xóa chú thích, hãy kiểm tra xem tệp có phải cố ý là JSONC không. Xóa nó đi và bạn có thể vẫn gặp dấu phẩy cuối hai dòng sau.

Câu hỏi thường gặp

Tôi nên chọn JSONC hay JSON5?

Dùng JSONC khi chú thích là thứ duy nhất bạn cần: nó thêm // và /* */ lên trên JSON, và settings.json cùng tsconfig.json của VS Code dùng nó. Dùng JSON5 khi bạn còn muốn nháy đơn, khóa không nháy, dấu phẩy cuối, số thập lục phân hay chuỗi nhiều dòng. Cả hai đều phụ thuộc vào trình nạp, nên hãy xác nhận công cụ đọc tệp hỗ trợ nó.

Vì sao không thể đọc tệp JSONC như JSON chuẩn?

JSONC là quy ước thực tế, không phải một RFC riêng, nên các bộ phân tích chuẩn từ chối chú thích. JSON.parse trên tệp như vậy ném Unexpected token /, chỉ vào chú thích chứ không phải dữ liệu. Chỉ cấu hình được trình soạn thảo hoặc bộ phân tích chuyên dụng đọc mới nên viết dưới dạng JSONC.

Tôi có nên gửi tệp JSON5 cho một API không?

Không. API, cột JSON trong cơ sở dữ liệu và hàng đợi đều phân tích JSON nghiêm ngặt, nên nháy đơn, khóa không nháy và dấu phẩy cuối của JSON5 đều bị từ chối. JSON5 dành cho cấu hình cục bộ do con người chỉnh sửa; hãy chuyển nó về JSON chuẩn trước khi đi qua ranh giới hệ thống.

Đọc thêm