JSON là một trong những định nghĩa khá phổ biến trong lĩnh vực lập trình, được sử dụng phổ biến bởi nhiều lập trình viên và thay thế cho những định dang dữ liệu truyền thống. Tuy nhiên, nhiều người đôi khi biết cách sử dụng nhưng chưa thực sự hiểu về khái niệm JSON là gì. Vậy trong bài viết này cùng chúng tôi tìm hiểu thêm nhé!
Định nghĩa
JSON là gì?
JSON là từ viết tắt của JavaScript Object Notation, là một định dạng trao đổi dữ liệu dựa trên văn bản, thường được sử dụng chính trong biểu diễn những cấu trúc và các đối tượng dữ liệu cơ bản dựa trên trình duyệt website. Hiểu cơ bản, đây là định dạng hỗ trợ lưu giữ những thông tin có cấu trúc và sử dụng trong truyền tải thông tin giữa server và client.
JavaScript Object Notation còn thường được sử dụng trong môi trường lập trình desktop và server. Định dạng này ban đầu được phát triển dựa trên JavaScript và được ra mắt với vai trò đầu tiên là ngôn ngữ kịch bản cho các trình duyệt như Web Netscape Navigator.
JSON ra mắt và được sử dụng trong JavaScript hướng đến tổ chức dữ liệu thay cho sự cồng kềnh của XML. Có thể kết hợp với đa dạng ngôn ngữ lập trình từ C++, Java đến Lips và rất nhiều ngôn ngữ khác mà không bị phụ thuộc riêng. Tài liệu viết dạng này tương đối nhẹ và có khả năng khai thác, thực thi nhanh chóng trên máy chủ.
File JSON là gì?
Tương tự XML lưu trong file .xml, dữ liệu dạng JSON sẽ được lưu trong những tệp có phần mở rộng dạng .json. Đây là tệp dữ liệu thuần túy và người dùng có thể sử dụng nhiều phần mềm đọc văn bản để mở được file này đơn giản và nhanh chóng.
Cấu trúc
Cùng tìm hiểu xem cấu trúc của kiểu định dạng trao đổi dữ liệu JavaScript Object Notation được thể hiện như thế nào thông qua cú pháp và các biến giá trị liên quan.
Cú pháp viết
Để tạo ra một file JavaScript Object Notation hoàn chỉnh, người lập trình cần tuân thủ đúng cú pháp viết, đây là điểm mà bất kỳ ai mới học đều phải nắm rõ. Hai yếu tố chính của một Object JSON bao gồm: keys và values.
- Keys: Luôn là chuỗi và luôn được đặt trong dấu ngoặc kép.
- Values: Có thể định dạng chuỗi, kiểu dữ liệu Boolean, Mảng hoặc một đối tượng Object.
Mỗi một Object sẽ bắt đầu và kết thúc gọn trong một cặp ngoặc nhọn {}, có thể có hai hoặc nhiều hơn các cặp key và value, mỗi cặp này lại được phân tách nhau bởi dấu phẩy (,). Cặp key/ value tách nhau bởi dấu hai chấm (:).
Có thể bạn quan tâm:
- Hosting và những điều cần biết trước khi mua
- Backend là gì? Một Backend Developer cần những kỹ năng gì?
Những loại value sử dụng trong JSON là gì?
Người dùng có thể sử dụng nhiều kiểu dữ liệu đa dạng như đã nêu trên
Mảng Array
Array là bộ sưu tập các values với thứ tự nhất định. Một Array được bao quanh một cặp ngoặc vuông ([]) và từng value bên trong sẽ được phân tách bởi một dấu phẩy (,). Một value kiểu array có thể chứa các object tức là nó cũng sử dụng cùng khái niệm cặp giá trị đi kèm key – value. Đây là dạng sử dụng phổ biến nhất trong các file JSON.
Ví dụ về mảngnhư sau:
{
“scores”: [
{
“Away_Score”: 2,
“Away_Team”: “Newcastle”
},
{
“Away_Score”: 2,
“Away_Team”: “Napoli”
}
]
}
Đối tượng Object
Một Object sẽ chưa cả key và value. Hai phần này cách nhau bởi dấu hai chấm (:) và cách các cặp khác bởi dấu phẩy (,). Object được xem như một value và phải tuân theo những quy tắc tương tự như một Object.
Ví dụ về Object như sau:
{
“employees”: {
“firstName”: “Dong”,
“lastName”: “Viet”
}
}
Chuỗi String
Chuỗi được sử dụng cho value của một đối tượng, được sử dụng khá nhiều. Nó là tập hợp bao gồm số 0 và các ký tự Unicode, được bao quanh bởi dấu ngoặc kép (“”).
Ví dụ chuỗi: “firstName”: “Dong”
Số Number
Số (number) cũng được sử dụng cho các value trong Object, có thể là số nguyên hoặc số thực, sử dụng cho những thuộc tính mang giá trị số.
Ví dụ về số number: {“tuoi”: “22”}
Boolean
Boolean là kiểu gồm hai giá trị đúng (true) hoặc sai (false), sử dụng biểu diễn value trong cặp key/ value của đối tượng trong JSON
Ví dụ về kiểu bool: {“married”: “false” }
Rỗng Null
Rỗng biểu thị không có thông tin. Sử dụng không phổ biến nhưng vẫn là biểu diễn cho value trong đối tượng thuộc JSON.
Ví dụ: {“name”: “null” }
Ưu điểm – nhược điểm
JSON có khá nhiều những ưu điểm mà khiến định dạng này ngày càng phổ biến và được sử dụng rỗng rãi hơn so với các kiểu định dạng trao đổi dữ liệu khác.
Ưu điểm
Một vài những ưu điểm có thể kể đến đó là:
- Cách viết ngắn gọn và dễ hiểu: Khác với các định dạng thường thấy, JSON tối ưu được cách thể hiện của dữ liệu có cấu trúc, dễ dàng quan sát và phù hợp cho những hệ thống phức tạp để đơn giản hóa quá trình xử lý.
- Thao tác nhanh hơn: Để phân tích được cấu trúc và cú pháp sử dụng của XML thì cần sử dụng đến các thao tác DOM để xử lý trong trường hợp các tệp XML lớn. Ngược lại, file JSON lại không yêu cầu dữ liệu cao từ đó giảm chí phí và tăng tốc độ làm việc.
- Dữ liệu có cấu trúc: JSON sử dụng cấu trúc thông tin dữ liệu dạng bản đồ trong khi XML lại sử dụng dạng cây truy xuất theo các node. Chính vì vậy JSON tạo thuận lợi cho mô hình dự đoán cũng như rất dễ hiểu.
Nhược điểm
Một vài khuyết điểm là hạn chế đang được cải thiện như:
- Không tích hợp Schema: Tuy người dùng có thể trình bày dữ liệu theo nhu cầu, nhưng việc không có Schema sẽ gây ra những trường hợp tạo sai, nhầm lẫn.
- Thiếu định dạng Date: Vì không có dạng Date cho value biểu thị nên thay vì dùng Date như trong XML, người dùng phải thay thế bằng string (chuỗi) để biểu diễn ngày.
- Chưa phải là ngắn gọn nhất: Tuy có hiệu quả cú pháp đáng kể so với XML nhưng đây vẫn chưa phải là định dạng dữ liệu ngắn gọn nhất vì vậy trong những hệ thống đòi hỏi độ phức tạp cao bạn nên sử dụng một định dạng tối ưu hơn.
Có gì khác biệt giữa JSON và XML?
Trong những năm gần đây, JSON dường như đang khiến cho XML thất thế, vậy đâu là yếu tố mấu chốt khiến JavaScript Object Notation ngày càng được sử dụng rộng rãi?
So sánh
Dưới đây là ví dụ về các dữ liệu được định dạng bởi JavaScript Object Notation và XML
Từ so sánh trên ta thấy những điểm tương đồng giữa hai kiểu định dạng này như sau:
- Hai kiểu định dạng đều tự mô tả dữ liệu và người đọc có thể hiểu cơ bản được nội dung.
- Hai kiểu định dạng này cũng có cấu trúc phân cấp (values in value)
- Đều có thể được tìm nạp thông qua XMLHttpRequest.
Tuy nhiên ta có thể dễ dàng nhận thấy sự khác biệt rõ ràng của JSON so với XML đó là:
- Không sử dụng thẻ đóng mở riêng biệt cho từng cặp.
- Ngắn gọn hơn rất nhiều về cú pháp
- Có thể tạo nhanh và dễ dàng hơn.
- Có thể sử dụng Array mảng trong cấu trúc của file.
JSON có hiệu quả hơn XML không?
Để phân tích cú pháp thì XML khó hơn khá nhiều. Còn JSON có thể phân tích cấu trúc cú pháp thành một đối tượng JavaScript đơn giản chỉ với lệnh. JSON hãy chuyển từ dữ liệu JavaScript Types sang JSON cũng nhanh chóng bằng lệnh .Stringify.
JSON cũng nhanh hơn XML, dễ dàng mở rộng mà lại không cần sử dụng cú pháp phức tạp. Nói chung lại, JavaScript Object Notation được sử dụng nhiều hơn so với XML và có nhiều ứng dụng hơn so với định dạng kiểu cũ.
Mong rằng qua những chia sẻ trên đây, chúng tôi đã giúp các bạn hiểu kỹ hơn về JSON và những vấn đề cơ bản. Trong tương lai những hạn chế kể trên của JSON chắc chắn sẽ được khắc phục và trở nên hoàn thiện hơn, trở thành định dạng trao đổi dữ liệu tối ưu hóa được quá trình xử lý chung.
FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng. |