JSON là gì? Hướng dẫn cho người mới bắt đầu
Nếu bạn đang bắt đầu hành trình trong phát triển web, bạn có thể đã gặp JSON vô số lần, ngay cả khi bạn không biết nó là gì. JSON, viết tắt của JavaScript Object Notation, là định dạng được sử dụng rộng rãi nhất để truyền dữ liệu giữa các ứng dụng. Từ các tweet bạn đọc trên mạng xã hội đến dữ liệu thời tiết trên điện thoại của bạn, JSON đang hoạt động hậu trường để làm cho tất cả điều đó trở nên khả thi.
JSON theo thuật ngữ đơn giản
Hãy nghĩ về JSON như một trình phiên dịch phổ quát cho dữ liệu giữa các hệ thống máy tính khác nhau. Giống như con người đã đồng ý sử dụng tiếng Anh làm ngôn ngữ chung trong kinh doanh quốc tế, máy tính và ứng dụng phần lớn đã đồng ý sử dụng JSON làm định dạng chung để trao đổi thông tin. Nhưng điều gì làm cho JSON đặc biệt so với các lựa chọn thay thế trước đó? Ở cốt lõi, JSON chỉ đơn giản là một cách viết dữ liệu dưới dạng văn bản tuân theo các quy tắc cụ thể. Các quy tắc này đủ đơn giản để cả con người có thể đọc được và máy tính có thể dễ dàng phân tích cú pháp. Khi bạn nhìn vào một file JSON, bạn sẽ thấy dữ liệu được tổ chức theo cấu trúc phân cấp rõ ràng chỉ sử dụng một vài phần tử cơ bản: dấu ngoặc nhọn {} cho đối tượng, dấu ngoặc vuông [] cho danh sách, dấu hai chấm để phân tách tên khỏi giá trị và dấu phẩy để phân tách các mục. Không giống như người tiền nhiệm XML của nó, sử dụng các thẻ mở và đóng dài dòng như <name>Minh</name>, JSON sử dụng cú pháp gọn gàng hơn: {"name": "Minh"}. Sự đơn giản này là một trong những lý do chính tại sao JSON trở nên phổ biến như vậy. Nó ít lộn xộn hơn, dễ viết hơn và chiếm ít không gian hơn khi được truyền qua mạng. JSON biểu diễn các khái niệm trong thế giới thực một cách tự nhiên. Một người có thể được biểu diễn dưới dạng một đối tượng với các thuộc tính như tên, tuổi và email. Một giỏ hàng có thể là một mảng các đối tượng sản phẩm. Một công ty có thể là một đối tượng chứa các mảng nhân viên và phòng ban. Ánh xạ tự nhiên này giữa các thực thể trong thế giới thực và các cấu trúc JSON là điều làm cho nó trực quan để làm việc. Mặc dù có 'JavaScript' trong tên của nó, JSON hoàn toàn độc lập với ngôn ngữ. Mọi ngôn ngữ lập trình chính đều có hỗ trợ tích hợp để phân tích cú pháp và tạo JSON. Python có json, Java có Jackson và Gson, PHP có json_encode và json_decode, và JavaScript tự nhiên hoạt động với JSON vì cú pháp dựa trên ký hiệu đối tượng literal của nó. Sự hỗ trợ phổ quát này là một lý do khác tại sao JSON đã trở thành tiêu chuẩn de facto cho việc trao đổi dữ liệu.
Tại sao JSON phổ biến
Sự vươn lên thống trị của JSON trong thế giới trao đổi dữ liệu không xảy ra một cách tình cờ. Nó xuất hiện như một giải pháp cho các vấn đề thực tế mà các lập trình viên đang gặp phải, và nó tiếp tục phát triển mạnh vì nó giải quyết những vấn đề đó tốt hơn các lựa chọn thay thế. Trước khi JSON trở nên phổ biến rộng rãi, XML là định dạng chính để trao đổi dữ liệu giữa các dịch vụ web. Mặc dù XML mạnh mẽ và linh hoạt, nó đi kèm với chi phí đáng kể. Tài liệu XML yêu cầu các hướng dẫn xử lý, không gian tên, quyết định thuộc tính so với phần tử, và phân tích cú pháp với các trình phân tích cú pháp DOM hoặc SAX phức tạp. Đối với việc trao đổi dữ liệu đơn giản, điều này là quá mức. Các lập trình viên muốn một cái gì đó nhẹ hơn. JSON cung cấp giải pháp thay thế nhẹ đó. Một REST API trả về danh sách người dùng trong XML có thể yêu cầu hàng chục dòng với các thẻ mở và đóng, trong khi cùng dữ liệu trong JSON có thể được biểu diễn trong một phần nhỏ không gian. Việc giảm kích thước payload này chuyển đổi trực tiếp thành truyền mạng nhanh hơn và chi phí băng thông thấp hơn, đặc biệt quan trọng đối với các ứng dụng di động nơi mỗi kilobyte đều quan trọng. Câu chuyện phân tích cú pháp cũng hấp dẫn tương tự. Trong JavaScript, phân tích cú pháp JSON về cơ bản là miễn phí vì JSON.parse() biến một chuỗi thành một đối tượng JavaScript gốc ngay lập tức. So sánh điều này với phân tích cú pháp XML, yêu cầu tạo một đối tượng trình phân tích cú pháp, xử lý các loại nút và điều hướng cây tài liệu. Ngay cả trong các ngôn ngữ khác, phân tích cú pháp JSON thường đơn giản hơn và nhanh hơn phân tích cú pháp XML. Sự đơn giản của JSON cũng giảm đường cong học tập cho các lập trình viên. Một lập trình viên junior có thể hiểu cú pháp JSON trong vài phút: đối tượng với các cặp khóa-giá trị, mảng giá trị và một số loại dữ liệu (chuỗi, số, boolean, null). Không cần phải học về DTD, XPath, XSLT hoặc hàng chục công nghệ khác thường đi kèm với XML. Sự phát triển của REST API và ứng dụng một trang đã tạo ra môi trường hoàn hảo cho JSON phát triển mạnh. Khi các ứng dụng web chuyển sang tìm nạp dữ liệu không đồng bộ và hiển thị ở phía client, các lập trình viên cần một định dạng mà JavaScript có thể làm việc một cách dễ dàng. JSON chính là định dạng đó. Ngày nay, JSON ở khắp mọi nơi. Nó là định dạng phản hồi cho gần như mọi web API. Nó là định dạng lưu trữ cho cơ sở dữ liệu tài liệu như MongoDB và CouchDB. Nó là định dạng cấu hình cho các gói Node.js (package.json), TypeScript (tsconfig.json), cài đặt VS Code và vô số công cụ khác. Học JSON không chỉ hữu ích, nó còn thiết yếu cho phát triển phần mềm hiện đại.
Thử công cụ
Định Dạng JSON