Có hai ngôn ngữ thường được sử dụng để diễn đạt dữ liệu, nhưng chúng rất khác nhau và ngày càng tốt hơn và tệ hơn cho các ứng dụng khác nhau. Một số người có cảm xúc về cái này hay cái kia, và khăng khăng rằng cái này nên bị cấm và cái kia giải quyết được mọi vấn đề. Điều này chính xác giống như nói rằng một cái tuốc nơ vít tốt hơn một cái búa, hoặc ngược lại. Vấn đề thực sự là sử dụng đúng công cụ cho đúng công việc. Vì vậy, chúng ta hãy xem nhanh hai ngôn ngữ dữ liệu này và hiểu chúng dùng để làm gì.
XML
Các eXtensible Markup Language ( XML ) được sử dụng để trao đổi tài liệu con người có thể đọc được dưới dạng điện tử. Chúng ta biết ngay từ cái tên rằng XML là một ngôn ngữ đánh dấu , có nghĩa là nó cung cấp các công cụ để chèn các chú thích, được gọi là đánh dấu , vào văn bản thông thường mà con người có thể đọc được. Các chú thích “đánh dấu” ranh giới trong văn bản và cho chúng ta biết những điều về văn bản giữa các ranh giới có thể không rõ ràng — ít nhất, không rõ ràng đối với máy móc. Một ngôn ngữ đánh dấu khác đang được sử dụng rộng rãi là Ngôn ngữ đánh dấu siêu văn bản ( HTML ), nơi đánh dấu được sử dụng chủ yếu để chỉ ra cách văn bản được hiển thị trên một trang Web cho người đọc. Ngược lại, việc sử dụng XML đúng cách là để chỉ raý nghĩa của văn bản , để các thông số kỹ thuật riêng biệt có thể chỉ ra cách hiển thị văn bản dựa trên ý nghĩa của nó. Điều này cho phép một tập hợp văn bản được hiển thị khác nhau cho các đối tượng và thiết bị xem khác nhau.
Xem bên dưới để biết đoạn trích của tài liệu XML. Các tên được đặt trong dấu ngoặc nhọn được gọi là thẻ và tạo thành dấu hiệu của những gì khác là văn bản thuần túy. Hầu hết các thẻ đi kèm với văn bản giữa thẻ bắt đầu và thẻ kết thúc và toàn bộ cấu trúc được gọi là một phần tử . Ví dụ, trong Hình 1, văn bản thuần túy Chương 1 được bao quanh bởi thẻ bắt đầu và thẻ kết thúc . Các phần tử có thể lồng vào nhau. Ví dụ, tiêu đề Chương 1 được lồng bên trong một phần tử . Phần tử tương tự cũng chứa hai phần tử . Phần tử được lồng bên trong phần tử .

JSON
JavaScript Object Notation ( JSON ) là một ngôn ngữ rất đơn giản để thể hiện các giá trị dữ liệu. JSON được xây dựng dựa trên hai loại cấu trúc tổng hợp: mảng và đối tượng. Một mảng là một danh sách các giá trị mà được phân biệt chỉ bởi thứ tự mà chúng xuất hiện, trong khi một đối tượng là một tập hợp các cặp tên / giá trị đó được phân biệt chỉ bằng tên của họ. Về mặt chính thức, một đơn vị của văn bản JSON được gọi đơn giản là: văn bản JSON , mặc dù nó cũng được gọi là tài liệu một cách không chính thức .
Xem bên dưới để biết ví dụ về văn bản JSON. Văn bản được đặt trong dấu ngoặc nhọn thể hiện giá trị của một đối tượng, trong khi văn bản được đặt trong dấu ngoặc vuông biểu thị giá trị của một mảng. Trong một đối tượng, mỗi thành phần có một tên, theo sau là dấu hai chấm, theo sau là giá trị. Trong một mảng, các giá trị không tên nối tiếp nhau trong một danh sách. Tuy nhiên, bản thân các giá trị có thể là các đối tượng. Ví dụ, trong mảng phoneNumbers, có hai đối tượng không tên, mỗi đối tượng bao gồm hai cặp tên / giá trị.

JSON thường được so sánh với XML như một ngôn ngữ hiệu quả hơn với cùng sức mạnh biểu đạt. Điều này không chính xác. Sự nhầm lẫn đã nảy sinh bởi vì trước khi có JSON, XML đã được sử dụng rất nhiều như một ngôn ngữ trao đổi dữ liệu, mặc dù mục đích thiết kế ban đầu của nó là nó được sử dụng như một ngôn ngữ đánh dấu. Là một ngôn ngữ dữ liệu, trong đó vị trí của chú thích trong văn bản có thể đọc được của con người là không liên quan, XML không hiệu quả một cách khủng khiếp vì tất cả các thẻ kết thúc đó, trong đó tên phần tử được lặp lại với dấu gạch chéo ở phía trước. Kết quả có thể là một tài liệu XML lớn hơn nhiều lần so với dữ liệu mà nó đang mang.
Một văn bản JSON có thể bao gồm văn bản mà con người có thể đọc được dưới dạng dữ liệu, nhưng không phải là văn bản được đánh dấu theo nghĩa giống như XML. Sẽ là một nhiệm vụ kinh khủng nếu điều chỉnh JSON để đánh dấu văn bản, vì JSON không bảo toàn thứ tự của các cặp tên / giá trị trong một đối tượng. Trong trường hợp bạn không nhận thấy, thứ tự quan trọng là trong ngôn ngữ tự nhiên.
Cả XML và JSON đều gây ra sự nhầm lẫn về mặt thuật ngữ khi sử dụng thuộc tính điều khoản (XML) và đối tượng (JSON).
Trong XML, thuộc tính là một cách ngắn gọn để liên kết một giá trị chuỗi đơn giản với một phần tử, mà giá trị đó không được coi là một phần của chính phần tử đó. Nhưng theo quan điểm lý thuyết dữ liệu, giá trị của một phần tử cũng giống như một thuộc tính dữ liệu của phần tử mà nó được lồng bên trong, vì một thuộc tính là một thuộc tính dữ liệu của phần tử mà nó áp dụng. Chúng tôi sẽ thích một số thuật ngữ khác hơn là thuộc tính.
Cái mà JSON gọi là một đối tượng thực sự là một cấu trúc dữ liệu. Nói một cách chính xác, một đối tượng là vật chất, và chiếm không gian. Một đối tượng máy tính chiếm không gian trong bộ nhớ hoặc bộ lưu trữ của máy tính. Ngược lại, một đối tượng JSON thể hiện một giá trị có thể được biểu thị bằng trạng thái của một đối tượng trong máy tính hoặc chỉ bằng mực trên giấy.
Có thể thấy rằng có những hệ sinh thái mạnh mẽ được xây dựng xung quanh XML như một ngôn ngữ đánh dấu và JSON như một ngôn ngữ dữ liệu. Có các công cụ, bộ phân tích, lược đồ để xác thực, nhóm người dùng và tất cả các loại tài nguyên để giúp bạn sử dụng từng ngôn ngữ theo cách tốt nhất có thể. Nó không phải là công cụ nào tốt hơn; đó là về công cụ nào phù hợp với mục đích trong tầm tay.
Nguồn https://tdan.com/whats-the-difference-between-json-and-xml/22029