2012-09-10 37 views
12

Tôi đã tìm thấy sự khác biệt giữa JSON và XML. Vì, cả hai đều dành cho trao đổi dữ liệu giữa các hệ thống, nhưng có sự khác biệt lớn giữa JSON và XML mà JSON nhẹ hơn XML. Nhưng tôi không thể tìm ra lý do thực sự là tại sao JSON lại có trọng lượng nhẹ. Điều gì làm cho JSON nhẹ cân ??Tại sao JSON lại nhẹ hơn XML?

Một câu trả lời tôi thấy là trong JSON không có nhiều đánh dấu xml bổ sung. Nó có nghĩa là gì. Có một số lý do khác mô tả lý do JSON có trọng lượng nhẹ không?

+1

Câu trả lời hoàn chỉnh xem xét tất cả ba câu trả lời hàng đầu mà bạn nhận được. Nếu bạn đang cố gắng chọn giữa XML và JSON, nó sẽ được đáp ứng để tự hỏi mình sẽ phục vụ mục đích gì. Nếu bạn muốn tuần tự hóa nhỏ gọn cho việc truyền tải hoặc lưu trữ khối lượng, JSON sẽ di chuyển. Nếu bạn muốn làm thủ tục tài liệu, XML là, như Kerrek lưu ý, tốt hơn được hỗ trợ bởi các công nghệ kết dính. Nếu bạn đang sử dụng .NET framework thì điều này ít quan trọng hơn vì LINQ có thể truy vấn/biến đổi thực tế mọi thứ. –

+1

@PeterWone: Không có gì giống như "ba câu trả lời hàng đầu" trên StackOverflow, bởi vì thứ tự thay đổi theo thời gian tùy theo số phiếu bầu. Để tham khảo các câu trả lời cụ thể, vui lòng đặt tên tác giả hoặc cung cấp cho liên kết cố định. Cụ thể, tại thời điểm viết bài này, chúng tôi có một câu trả lời với 21 phiếu và ba câu trả lời với 5 phiếu bầu. Vậy cái nào là "top ba"? :) – KPM

+0

@KPM - vâng, và đó là chính xác những gì tôi muốn nói: ba câu trả lời có điểm số cao nhất tại thời điểm nhận xét. Tôi * đã * đặt tên cho một trong những tác giả và nhận xét của tôi có khả năng tự đứng vững; Tôi đề cập đến những câu trả lời đó hoàn toàn như một sự lịch sự đối với các tác giả. Dù sao, ở đây chúng tôi là năm sau và họ vẫn là ba câu trả lời hàng đầu cũng như ba câu trả lời hàng đầu. –

Trả lời

27

Bạn có xem tại ví dụ về tài liệu JSON và XML không?

Trong khi cả JSON và XML được sử dụng để đại diện cho các dữ liệu cây tùy ý, XML dài hơn nhiều. Mỗi phần tử trong cây có một tên (tên kiểu phần tử) và phần tử phải được đặt trong một cặp thẻ phù hợp. Ngược lại, JSON biểu thị cây theo kiểu ký tự "mảng lồng nhau" giống như của Javascript (trên thực tế, một tài liệu JSON theo nghĩa đen có thể được phân tích cú pháp dưới dạng Javascript để tạo thành mảng tương ứng).

Hãy xem at the differences.

XML là tất nhiên ngữ nghĩa phong phú hơn, vì các yếu tố có thể được trang trí với một số tùy ý của thuộc tính, và các yếu tố có thể chứa nội dung hỗn hợp của dòng văn bản miễn phí và hơn nữa, yếu tố lồng nhau. Ví dụ, đoạn mã sau đây sẽ là tẻ nhạt để diễn tả như JSON:

<paragraph> 
    This is an entire paragraph of <emph>text</emph>. It is interspersed with 
    further, nested <emph>XML elements</emph>, as well as the occasional 
    <link href="http://stackoverflow.com/a/12346394/596781">hyperlink</link>. 
</paragraph> 

Mặt khác, dữ liệu -like tài liệu có thể được đơn giản hơn nhiều trong JSON. Hãy tưởng tượng điều này:

<properties> 
    <property type="int" name="ID">123</property> 
    <property type="date" name="birthday">19700101</property> 
    <references> 
     <url>http://stackoverflow.com/a/12346394/596781</url> 
     <doi>something.made.up</doi> 
    </references> 
</properties> 

Điều này trở thành một mảng JSON rất nhỏ gọn.

Cân nhắc thứ cấp là lượng bộ công cụ bao quanh cả hai định dạng. Trong khi các công cụ JSON chủ yếu là phân tích cú pháp dữ liệu JSON, W3C đã phát triển một tập hợp rất lớn các công nghệ kết dính để thao tác XML theo kiểu có hệ thống, chẳng hạn như XSLT và XPATH.

Tóm lại, và như một ý kiến ​​rất cá nhân, tôi muốn nói rằng XML là về tài liệu và JSON là về dữ liệu. XML sẽ cảm thấy tự nhiên và hữu ích hơn cho các tài liệu có cấu trúc lớn, trong khi JSON thường là định dạng đơn giản hơn và ít tiết hơn để truyền dữ liệu.

+1

Với XML, bạn sẽ khai báo các kiểu dữ liệu trong lược đồ của mình chứ không phải là một phần dữ liệu của bạn. một ví dụ tốt hơn về XML sẽ là '' –

+1

Nhiều mẫu XML trên liên kết cung cấp không hợp lệ và không thực sự là một sự so sánh công bằng với JSON khi chúng cố tình tạo ra các bloated XML –

8

Ký hiệu JSON là terser. XML lặp lại kiểu nút trong thẻ đóng trong khi JSON chỉ thâm nhập phạm vi đóng bằng cách sử dụng một chồng. XML hỗ trợ không gian tên, theo như tôi biết JSON thì không. Các lược đồ XML thường bao gồm thông tin kiểu nhưng không có lý do cụ thể nào mà bạn không thể làm điều này với JSON. Cần lưu ý rằng sự gia tăng của JSON là do không nhỏ trong thực tế là nó có chức năng tương đương với XML trong tất cả các khía cạnh thực sự là được sử dụng. Trên dây, sự khác biệt biến mất ngay sau khi nén LZW đi vào bởi vì XML mang lại hiệu quả tốt cho nén từ điển.

8

Mô hình dữ liệu khác.Ngoài việc thiếu đánh dấu, mà bạn nhận thấy chính mình, JSON cũng không có tất cả các tính năng XML khác, chẳng hạn như:

  • hướng dẫn chế biến
  • Comments
  • Thuộc tính

Do đó , không chỉ dữ liệu chính nó còn nhẹ hơn, mà còn bất kỳ thư viện nào thực hiện mô hình dữ liệu. Điều này làm cho việc hiển thị, phân tích cú pháp, xử lý JSON với các ngôn ngữ không phải JavaScript nhanh hơn rất nhiều. Đối với JavaScript, đây là không có trí tuệ, như JSON là mã JavaScript thực tế, và do đó nhiều hơn nữa "nhẹ" cho một phân tích cú pháp Javascript để xử lý

7

đơn giản

XML là đơn giản hơn SGML, nhưng JSON là đơn giản hơn nhiều so với XML. JSON có một ngữ pháp và bản đồ nhỏ hơn nhiều trực tiếp hơn vào các cấu trúc dữ liệu được sử dụng trong các ngôn ngữ lập trình hiện đại.

Khả năng mở rộng

JSON là không thể mở rộng bởi vì nó không cần phải được. JSON không phải là ngôn ngữ đánh dấu tài liệu, do đó không cần phải xác định các thẻ hoặc thuộc tính mới để biểu diễn dữ liệu trong đó.

Khả năng cộng tác

JSON có tiềm năng khả năng tương tác giống như XML.

Cởi mở

JSON là ít nhất cũng mở như XML, có lẽ nhiều hơn như vậy bởi vì nó không nằm ở trung tâm của cuộc đấu tranh tiêu chuẩn của công ty/chính trị.

Content link

3

Có một số yếu tố tại chơi ở đây:

(a) mô hình dữ liệu JSON là đơn giản; nó có ít loại đối tượng khác nhau và chúng có ít thuộc tính hơn.

(b) mô hình dữ liệu JSON là gần gũi hơn với các dữ liệu mô hình có sẵn trong các ngôn ngữ lập trình phổ biến như Javascript, vì vậy chuyển đổi dữ liệu ít hơn là cần thiết khi sử dụng những ngôn ngữ

(c) cú pháp tuần tự của JSON còn ít dự phòng (ít tiết) hơn cú pháp của XML.

Tất nhiên, những khác biệt này là do JSON được thiết kế cho một mục đích khác với XML.

3

Nó chỉ nhỏ hơn theo hệ số tuyến tính. Đó không phải là thực sự nhỏ hơn. Sau khi được nén, cả hai định dạng đều có cùng khoảng trống.

Hãy nhớ rằng các chương trình đã phải sử dụng XML sẽ không đơn giản hơn bằng cách cho phép JSON, chúng sẽ trở nên phức tạp hơn. Các tiêu chuẩn bổ sung chỉ làm phức tạp mọi thứ trừ khi bạn loại bỏ các tiêu chuẩn cũ và XML sẽ không biến mất sớm.

XML được thiết kế xung quanh khái niệm tài liệu. JSON là nhiều hơn về cấu trúc dữ liệu đơn giản. JSON quan tâm ít hơn đến các tiêu chuẩn, tức lànó không có lược đồ, vì vậy tính di động có thể khó khăn hơn so với người có kỹ năng sử dụng XML. Thông thường khi tôi phải sử dụng một số dịch vụ ReSTful, tôi được yêu cầu 'đọc mã' hoặc 'xem xét dữ liệu JSON' để hiểu nó. I E. ẩn (và khá thường xuyên, thay đổi) định dạng dữ liệu.

Cả hai định dạng đều gặp phải vấn đề mà chúng có thể, ở dạng tự nhiên của chúng, chỉ thể hiện cây cối chứ không phải biểu đồ dữ liệu. Tôi không thích một trong hai định dạng. Cả hai dường như đã hoàn thành một nửa. Object serialization giải quyết được nhiều vấn đề hơn.

0

Tại sao chúng ta nên quên khía cạnh bảo mật? Trong khi chuyển dữ liệu qua mạng, XML an toàn hơn khi chúng ta có thể chuẩn bị phong bì XML và đưa ra yêu cầu SOAP.

Các vấn đề liên quan