JSON Toolkit

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

Tập hợp những câu hỏi thường gặp nhất về các công cụ trên trang này và về đặc tả JSON, nhóm theo tình huống, với câu trả lời có thể hành động ngay thay vì một kết luận mơ hồ.

25 bài viết

Bài viết trong chuyên mục này

JSON có thể có chú thích không

RFC 8259 không có cú pháp chú thích, nên // và chú thích khối làm JSON.parse ném lỗi. Hãy dùng JSON5 hoặc JSONC, một trường _comment, mô tả trong Schema, hoặc YAML thay thế.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

Vì sao dấu phẩy cuối làm hỏng JSON

Dấu phẩy cuối hợp lệ trong object literal của JavaScript nhưng lại gây lỗi chí mạng trong JSON. Đây là thông báo lỗi chính xác, ngữ pháp RFC 8259 gây ra nó, và ba cách sửa thực sự hiệu quả.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

BOM có làm hỏng việc phân tích JSON không

BOM UTF-8 là ba byte vô hình, nên JSON.parse thất bại ở ký tự đầu và báo dòng 1 cột 1, làm tệp trông như rỗng hoặc bị cắt cụt.

Người mớiĐọc khoảng 4 phútCập nhật 2026-10-30

NaN hay Infinity có thể xuất hiện trong JSON không

JSON chỉ có số thập phân dạng literal. JSON.stringify biến NaN và Infinity thành null mà không cảnh báo, đó là lý do câu "trường số thỉnh thoảng lại null" cứ xuất hiện trên môi trường production.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

Tại sao số nguyên lớn mất độ chính xác

Số nguyên vượt quá 2^53-1 mất độ chính xác trong JSON.parse. ID snowflake, mã đơn hàng và bigint trong cơ sở dữ liệu đều gặp vấn đề này, nên hãy giữ chúng dưới dạng chuỗi từ đầu đến cuối.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-11-04

Tại sao tiếng Trung biến thành \u4e2d\u6587

Chuỗi escape \u4e2d\u6587 là Unicode hợp lệ, không phải lỗi encoding. Mojibake thật trông khác, và việc phân biệt hai trường hợp quyết định bạn thực sự cần sửa gì.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

JSON, JSON5 và JSONC

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útCập nhật 2026-10-30

JSON hay YAML

JSON phân định bằng ngoặc còn YAML bằng thụt lề: máy thì dùng JSON, người chỉnh sửa cấu hình thì dùng YAML. Chú thích, anchor và cấu trúc nhiều tài liệu không sống sót khi chuyển đổi.

Người mớiĐọc khoảng 4 phútCập nhật 2026-10-30

JSONPath hay JSON Pointer

JSON Pointer là một địa chỉ duy nhất có thể lưu làm khóa; JSONPath là một ngôn ngữ truy vấn. Dùng sai loại sẽ làm hỏng cập nhật cấu hình hoặc tự tạo ra một JSONPath hỏng.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-10-30

JSON Schema thực sự giải quyết điều gì

Schema quản lý cấu trúc và kiểu dữ liệu, không quản lý ý nghĩa nghiệp vụ. Nó chặn trường thiếu, kiểu sai và enum ngoài phạm vi, còn những quy tắc như số tiền phải lớn hơn 0 vẫn nằm trong mã.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-10-30

draft-07 hay 2020-12

2020-12 là bản hiện hành và bổ sung $defs, prefixItems cùng unevaluatedProperties, nhưng nhiều công cụ vẫn chỉ nói draft-07. Hãy chọn theo những gì toàn bộ chuỗi công cụ của bạn hỗ trợ.

Nâng caoĐọc khoảng 4 phútCập nhật 2026-10-30

Sinh kiểu TypeScript từ một Schema

json-schema-to-typescript và quicktype phát ra tệp .d.ts chỉ với một lệnh, nhưng đó mới là bản nháp: tính tùy chọn, union, additionalProperties và ngày tháng vẫn cần con người rà lại.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-10-30

Tăng tốc phân tích JSON lớn

Tối ưu theo thứ tự sai khiến mọi lần đổi thư viện đều vô ích. Hãy đo riêng mạng, phân tích và kết xuất, rồi giảm số lần phân tích, thu nhỏ payload và dùng dạng luồng.

Trung cấpĐọc khoảng 5 phútCập nhật 2026-10-30

__proto__ injection là gì

JSON.parse coi __proto__ là một khóa bình thường; thiệt hại xảy ra trong một phép gộp đệ quy ghi vào Object.prototype, khiến mọi đối tượng kế thừa thuộc tính của kẻ tấn công.

Nâng caoĐọc khoảng 5 phútCập nhật 2026-10-30

XSS xảy ra qua JSON như thế nào

JSON không bao giờ tự thực thi. XSS xảy ra đúng lúc bạn coi nó là HTML — nối chuỗi phía máy chủ, innerHTML phía frontend, hoặc nhúng JSON thẳng vào thẻ script.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-10-30

Trình duyệt xử lý được tệp JSON lớn đến mức nào

Không có giới hạn cố định; ràng buộc thật sự là ngân sách bộ nhớ của tab. Tệp 20MB thường phình lên 60–100MB sau khi phân tích, và DOM được tô sáng có thể nhân đôi con số đó một lần nữa.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

Một phản hồi API nên dùng cấu trúc nào

Object trần thì sạch cho đến khi bạn cần metadata; envelope đầy đủ thì an toàn nhưng dài dòng. Với hầu hết dự án, hãy dùng mã trạng thái HTTP cho kết quả và một envelope ổn định cho dữ liệu.

Trung cấpĐọc khoảng 4 phútCập nhật 2026-10-30

Định dạng nào cho timestamp trong JSON

Số epoch và chuỗi ISO đều có điểm đánh đổi, nhưng trộn lẫn chúng mới là thứ thực sự làm hỏng mọi việc. Hãy dùng ISO 8601 kèm offset, lưu theo UTC, hiển thị theo múi giờ của người dùng.

Người mớiĐọc khoảng 3 phútCập nhật 2026-10-30

null hay bỏ qua trường

`null` nói rằng trường tồn tại nhưng không có giá trị; bỏ qua trường nói rằng trường không tồn tại. Thân PATCH, gộp cấu hình và điền sẵn biểu mẫu là nơi sự khác biệt này gây ra vấn đề.

Trung cấpĐọc khoảng 3 phútCập nhật 2026-10-30