06/10/2026 · VietTechies · Biên tập

Tháng 4 năm 2001, tại căn garage ở khu vực Vịnh San Francisco của Chip Morningstar, ông cùng Douglas Crockford vây quanh một màn hình máy tính để thử nghiệm một đoạn mã trình duyệt tối giản. Với tư cách là những nhà đồng sáng lập State Software, họ cần một phương thức truyền dữ liệu động vào ứng dụng web sau khi tải trang mà không bắt buộc trình duyệt phải tải lại toàn bộ màn hình. Kết quả từ thử nghiệm đó là một tài liệu HTML nhỏ chứa một đối tượng JavaScript nguyên bản được gửi qua một frame ẩn của trình duyệt—gói dữ liệu hoạt động đầu tiên của định dạng mà sau này trở thành JavaScript Object Notation, hay JSON.

Mẹo dùng frame ẩn trong căn garage ngoại ô
Vào năm 2001, việc xây dựng các ứng dụng web tương tác đồng nghĩa với việc phải đối mặt với sự bất tương thích sâu sắc giữa các trình duyệt phổ biến. Internet Explorer 5 đã giới thiệu một phiên bản sơ khai thuộc sở hữu riêng của XMLHttpRequest thông qua ActiveX ngay từ năm 1999, nhưng Netscape 4 lại không hề có tính năng tương đương. Để truyền dữ liệu tương thích trên nhiều trình duyệt mà không phụ thuộc vào các đối tượng ActiveX độc quyền, Crockford và Morningstar đã tìm đến một giải pháp thay thế độc đáo có tên là kỹ thuật frame ẩn (hidden frame).
Hệ thống của họ trỏ một frame HTML ẩn đến URL của máy chủ mục tiêu. Máy chủ sẽ trả về một gói HTML gọn nhẹ chứa mã JavaScript được nhúng bên trong. Khi được tải xong, đoạn mã này sẽ thực thi lệnh như parent.session.receive(), truyền một đối tượng JavaScript thuần túy trở lại ứng dụng chính. Bằng cách khai báo rõ ràng thuộc tính domain của tài liệu, họ đã vượt qua các rào cản bảo mật frame liên tên miền trên cả hai nền tảng trình duyệt một cách thành công.
Từ khóa dự phòng và quy tắc bọc dấu ngoặc kép
Do mẹo sử dụng frame truyền trực tiếp cú pháp JavaScript nguyên bản, gói dữ liệu không đòi hỏi một bộ phân tích cú pháp riêng biệt; trình thông dịch tích hợp sẵn của trình duyệt đã tự động xử lý dữ liệu. Tuy nhiên, đợt kiểm thử ban đầu đã gặp sự cố phân tích cú pháp ngoài dự kiến khi một khóa đối tượng sử dụng từ "do". ECMAScript thời điểm đó duy trì hàng chục từ khóa dự phòng, và việc dùng "do" làm một khóa đối tượng không đặt trong dấu ngoặc kép đã khiến bộ phân tích cú pháp của trình duyệt bị treo.
Thay vì bắt các nhà phát triển phải học thuộc lòng hàng chục từ khóa bị cấm, Crockford đã đưa ra một quy tắc nghiêm ngặt: tất cả các khóa trong định dạng mới phải được đặt trong dấu ngoặc kép đôi để trình thông dịch xử lý chúng như các chuỗi ký tự thông thường. Khi hai nhà sáng lập định đặt tên cho định dạng của mình là JSML, họ phát hiện ra rằng từ viết tắt này đã được sử dụng bởi Java Speech Markup Language, dẫn đến quyết định chọn tên JavaScript Object Notation. Đến năm 2002, Crockford đã đăng ký tên miền JSON.org để công bố ngữ pháp chính thức cùng các bản cài đặt trình phân tích cú pháp tham chiếu.
Làn sóng AJAX và cuộc tranh luận tái chế bánh xe
JSON nhanh chóng thu hút sự chú ý và áp dụng rộng rãi sau sự xuất hiện của AJAX, một thuật ngữ được nhà phát triển web Jesse James Garrett đưa ra vào năm 2005. Mặc dù từ viết tắt này đại diện cho Asynchronous JavaScript và XML, Garrett đã lưu ý trong một bài hỏi đáp sau đó rằng JSON hoàn toàn là một giải pháp thay thế khả thi cho XML trong việc tổ chức cấu trúc dữ liệu ứng dụng.
Khi các kỹ sư phần mềm bắt đầu ưa chuộng JSON nhờ sự giản dị của nó, những người ủng hộ các tiêu chuẩn hiện có đã lên tiếng phản đối. Năm 2006, Dave Winer, một nhà tiên phong về RSS, đã công khai chỉ trích JSON trên bài đăng blog của mình, đặt câu hỏi tại sao lại có người muốn tái chế lại XML. Crockford đã để lại một câu trả lời đáng nhớ ở phần bình luận: điểm tốt của việc tái chế lại bánh xe là bạn có thể tạo ra một cái bánh xe thực sự tròn.
Từ điển, mảng và quá trình chuẩn hóa toàn cầu
Sự chuyển dịch kỹ thuật từ XML sang JSON xuất phát từ bản chất thiết kế cấu trúc dữ liệu. XML phát triển từ SGML và các công cụ đánh dấu xử lý văn bản đời đầu như Scribe, vốn được thiết kế để đánh dấu tài liệu chứa định dạng nhúng và nội dung văn bản hỗn hợp. JSON đã loại bỏ hoàn toàn việc đánh dấu tài liệu, thu hẹp mô hình của mình vào các từ điển khóa-giá trị và mảng có thứ tự—những cấu trúc dữ liệu cốt lõi có mặt trong hầu hết mọi ngôn ngữ lập trình.
Bằng cách loại bỏ các thẻ rườm rà và sự phức tạp của tài liệu, JSON giúp các dịch vụ web truyền dữ liệu nhẹ hơn, ánh xạ trực tiếp vào cấu trúc dữ liệu của mã nguồn. Vào năm 2013, Twitter đã ngừng hỗ trợ XML để chuyển hẳn sang các API chỉ sử dụng JSON, và đến năm 2014, định dạng này đã được chính thức hóa bởi cả tiêu chuẩn ECMA lẫn RFC. Điều khởi đầu như một mẹo khắc phục tạm thời nhằm kết nối các trình duyệt không tương thích trong một căn garage đã trở thành giao thức tiêu chuẩn toàn cầu cho việc trao đổi dữ liệu web.
Ảnh đầu bài: minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: 0b10
0b10
The Rise and Rise of JSON
