JSON là một tiêu chuẩn mở dựa trên văn bản để trao đổi dữ liệu. XML (ngôn ngữ đánh dấu eXtensible) là một định dạng độc lập phần mềm-phần cứng để trao đổi dữ liệu. Nhìn chung cả JSON và XML đều có thể được sử dụng để nhận dữ liệu từ máy chủ web. Nhưng nó cũng có những sự khác nhau và ưu nhược điểm nhất định để ta có thể đưa ra việc lựa chọn nên sử dụng cái nào cho hợp lý. Ta sẽ tìm hiểu nó vào bài này.

1. Tính năng nổi bật của JSON và XML

1.1. JSON

API JSON cung cấp Facade cao cấp, giúp đơn giản hóa các UC (use-case) được sử dụng. Cùng với đó JSON nhanh và không chiếm dụng nhiều dung lượng bộ nhớ, phù hợp cho các hệ thống hoặc đối tượng biểu đồ lớn. Thư viện JSON mã nguồn mở và miễn phí. Thư viện JSON cũng không yêu cầu thư viện bổ sung khác để xử lý. JSON sẽ tạo một kết quả tương thích và dễ đọc hơn rất nhiều.

1.2. XML

XML là ngôn ngữ đánh dấu có thể mở rộng như HTML. Cùng với đó định dạng có cấu trúc dễ đọc và viết từ các chương trình. Mã Mark-up XML cũng đã khá đơn giản và dễ hiểu. Các thẻ XML không được xác định trước, do đo người dùng sẽ phải xác định các thẻ tùy chỉnh.

2. Ưu nhược điểm của JSON và XML

2.1. Ưu nhược điểm của JSON

Về ưu điểm JSON có những ưu điểm sau:

  • Hỗ trợ tất cả các trình duyệt.
  • Dễ đọc và viết. Cú pháp đơn giản. Dễ dàng tạo và thao tác các mã.
  • Người dùng có thể sử dụng hàm eval() để phân tích cú pháp gốc trong Js. Được hỗ trợ bởi hầu hết các framework Js chính và công nghệ backend .
  • Cho phép truyền và tuần tự hóa dữ liệu có cấu trúc thông qua kết nối mạng.
  • Người dùng có thể sử dụng JSON với các ngôn ngữ lập trình hiện đại.
  • Các đối tượng Js bất kỳ có thể được chuyển đổi thành JSON và gửi JSON này đến máy chủ.

Nhưng thay vào đó nó cũng có một số nhược điểm:

  • Không hỗ trợ namespace , khả năng mở rộng kém.
  • Hạn chế hỗ trợ các công cụ phát triển.
  • Không hỗ trợ định nghĩa formal grammar .

2.2. Ưu nhược điểm của XML

Một số ưu điểm của XML như:

  • Trao đổi dữ liệu giữa các nền tảng, hệ thống và ứng dụng nhanh chóng.
  • XML tách dữ liệu khỏi HTML.
  • XML đơn giản hóa quá trình thay đổi nền tảng.

Đi kèm với nó là một số nhược điểm:

  • XML yêu cầu ứng dụng xử lý.
  • Cú pháp XML khá giống với định dạng truyền dữ liệu thay thế, điều này đôi khi khiến người dùng nhầm lẫn. Cú pháp XML là thừa.
  • Không hỗ trợ kiểu dữ liệu nội tại và không cho phép người dùng tạo thẻ.

3. So sánh JSON và XML

Ta có một số ví dụ về JSON và XML dưới đây:

{"employees":[
  { "firstName":"Thành", "lastName":"Nguyễn" },
  { "firstName":"Nam", "lastName":"Chu" },
  { "firstName":"Sơn", "lastName":"Phùng" }
]}
//JSON
<employees>
  <employee>
    <firstName>Thành</firstName> <lastName>Nguyễn</lastName>
  </employee>
  <employee>
    <firstName>Nam</firstName> <lastName>Chu</lastName>
  </employee>
  <employee>
    <firstName>Sơn</firstName> <lastName>Phùng</lastName>
  </employee>
</employees>
//XML

Như ta có thể thấy JSON cũng giống XML ở một số điểm

  • Cả JSON và XML đều “tự mô tả” (con người có thể đọc được)
  • Cả JSON và XML đều phân cấp (giá trị trong giá trị)
  • Cả JSON và XML đều có thể được phân tích cú pháp và được sử dụng bởi rất nhiều ngôn ngữ lập trình
  • Cả JSON và XML đều có thể được tìm nạp bằng XMLHttpRequest

Nhưng ta có thể thấy điểm nổi bật của JSON rõ ràng như:

  • JSON không sử dụng thẻ kết thúc
  • JSON ngắn hơn
  • JSON đọc và viết nhanh hơn
  • JSON có thể sử dụng mảng

Sự khác biệt lớn nhất ở đấy ta có thể thấy là XML phải được phân tích cú pháp bằng trình phân tích cú pháp XML. JSON có thể được phân tích cú pháp bởi một hàm Js tiêu chuẩn.

4. JSON có tốt hơn XML không?

XML khó phân tích cú pháp hơn nhiều so với JSON. Còn với JSON được phân tích cú pháp thành một đối tượng Js sẵn sàng sử dụng. JSON nhẹ, đơn giản và dễ đọc. Nó cũng nhanh hơn. XML dễ mở rộng hơn nhưng lại phức tạp hơn nhiều. Nói chung JSON được ưu tiên hơn XML vì XML khó phân tích cú pháp hơn JSON. Nó nhanh hơn và dễ dàng hơn XML trong các ứng dụng liên quan đến AJAX. JSON có thể được sử dụng thay thế cho XML.