Câu chuyện phía sau công cụ định dạng JSON

JSON ngày nay là định dạng mà hầu hết API web sử dụng, nhưng chưa từng được một ủy ban thiết kế. Nó được nhận ra hơn là được phát minh: một tập con nhỏ của JavaScript vừa đủ để chuyển dữ liệu giữa các chương trình.

Dấu ngoặc nhọn và các khối dữ liệu lồng nhau tạo thành một cái cây phát sáng
Dấu ngoặc nhọn và các khối dữ liệu lồng nhau tạo thành một cái cây phát sáng

Một định dạng được khám phá

Khoảng năm 2001, Douglas Crockford và các đồng nghiệp ở State Software tìm cách để trình duyệt và máy chủ trao đổi dữ liệu mà không cần plugin. Họ dùng các literal đối tượng và mảng mà JavaScript đã hiểu, đặt tên cho ý tưởng và đưa ngữ pháp lên json.org, nổi tiếng vì ngắn đến mức vừa mặt sau tấm danh thiếp.

Vì sao không có chú thích

Từ sớm, Crockford đã bỏ chú thích khỏi JSON vì có người bắt đầu đặt chỉ thị cho trình phân tích vào đó, điều sẽ phá vỡ khả năng tương thích. Lời khuyên của ông là xóa chú thích bằng công cụ thu gọn trước khi phân tích. Vì vậy công cụ định dạng báo chú thích là ký tự không mong đợi, và vì vậy có các định dạng như JSON5 và JSONC cho tệp cấu hình.

Từ trang web đến tiêu chuẩn

JSON lần đầu được mô tả trong RFC 4627 năm 2006. Ecma công bố ECMA-404 năm 2013, và IETF thay các văn bản cũ bằng RFC 8259 năm 2017, yêu cầu UTF-8 cho JSON trao đổi giữa các hệ thống. Ngữ pháp hầu như không đổi kể từ json.org: đối tượng, mảng, chuỗi, số, true, false và null.

Số và đường dẫn

Bản thân JSON không giới hạn số, nhưng phần lớn trình phân tích lưu chúng dưới dạng số dấu phẩy động 64 bit, nên số nguyên lớn hơn 9007199254740991 có thể âm thầm mất độ chính xác. Vì thế ID lớn thường được gửi dưới dạng chuỗi. Để trỏ tới một giá trị, Stefan Goessner đề xuất JSONPath năm 2007 dựa trên XPath, và nó trở thành chuẩn RFC 9535 năm 2024. Đường dẫn mà công cụ này sao chép theo cách viết với dấu đô la và ngoặc vuông đó.

Hỏi thường xuyên

Ai đã phát minh ra JSON?

Douglas Crockford đã đặc tả và phổ biến JSON vào đầu những năm 2000, dù ông nói mình chỉ khám phá ra nó, vì đó là một tập con có sẵn của JavaScript.

Vì sao JSON không cho phép dấu phẩy cuối hoặc dấu nháy đơn?

Ngữ pháp được giữ nhỏ nhất có thể để mọi ngôn ngữ phân tích theo cùng một cách. Mỗi tiện ích thêm vào là một cơ hội nữa để hai trình phân tích cho kết quả khác nhau.

JSON có giống đối tượng JavaScript không?

Không. JSON là văn bản. Khóa phải dùng dấu nháy kép, và hàm, undefined, chú thích, NaN và Infinity không được phép, dù JavaScript chấp nhận chúng trong mã.

Sẵn sàng thử chưa?

Mở PictorX trong trình duyệt của bạn — không cài đặt, không cần thiết thẻ tín dụng để khởi động.

Mở công cụ định dạng JSON