Bỏ qua điều hướng
← Về danh sách bài viết
Blog Công Nghệ

JSON là gì? Cấu trúc và ứng dụng JSON cho người mới

JSON là gì? Bạn đã nắm được kiến thức lập trình này hay chưa? Cùng đọc bài viết sau đây để hiểu thêm về JSON và cách ứng dụng của nó nhé.

JSON-la-gi.png

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu dạng văn bản, nhẹ, dễ đọc và được hầu hết các ngôn ngữ lập trình hỗ trợ. Đặc biệt, JSON không phải là một ngôn ngữ lập trình mà chỉ là một chuẩn dữ liệu độc lập, đồng thời có thể được tạo ra và xử lý bởi JavaScript, Python, Java, PHP hay C#. Quan trọng hơn, JSON sở hữu cấu trúc rất đơn giản gồm hai thành phần chính là Object (đối tượng) và Array (mảng), được xây dựng từ các cặp key-value dễ hiểu cho cả người và máy.

Để giúp người mới bắt đầu nắm vững kiến thức nền tảng này, bài viết dưới đây BKNS sẽ đi từ định nghĩa, phân tích cấu trúc, so sánh với XML, làm rõ ứng dụng thực tế cho đến hướng dẫn cách đọc – viết một file JSON hoàn chỉnh. Hãy cùng khám phá chi tiết ngay sau đây.

JSON là viết tắt của “JavaScript Object Notation” (định dạng đối tượng JavaScript). Đây là một định dạng dữ liệu phổ biến được sử dụng để truyền tải và lưu trữ dữ liệu dễ dàng trong các ứng dụng web và di động.

JSON là một cú pháp dựa trên văn bản (text-based) và độc lập với ngôn ngữ lập trình, cho phép biểu diễn cấu trúc dữ liệu theo dạng các cặp “key-value” (khóa-giá trị). Các đối tượng JSON được bao bọc bởi cặp dấu ngoặc nhọn {} và gồm các cặp key-value được phân tách bằng dấu phẩy.

JSON không phải là một ngôn ngữ lập trình mà là một định dạng dữ liệu (data format) độc lập, được thiết kế chuyên biệt để biểu diễn và trao đổi thông tin có cấu trúc. Đây là một trong những ngộ nhận phổ biến nhất đối với người mới tiếp cận JSON, vì vậy cần làm rõ ngay từ đầu để tránh nhầm lẫn trong quá trình học tập và sử dụng.

Cụ thể hơn, sự khác biệt giữa JSON và một ngôn ngữ lập trình nằm ở ba lý do chính sau đây.

Ví dụ về cấu trúc JSON là gì?

Định dạng của JSON là “key – value”, hỗ trợ các cấu trúc dữ liệu như đối tượng và mảng. Có thể xem ví dụ dưới đây.

Ví dụ này định nghĩa một đối tượng nhân viên: Gồm 2 bản ghi nhân viên (đối tượng):

text
{
  "employees":[
    {"firstName":"Hailey", "lastName":"Summer"},
    {"firstName":"Thanh Huyen", "lastName":"Le"},
  ]
}

Hoặc:

text
{
  "name" : "BKNS"
  "title": "BKNS - Nhà cung cấp tên miền, dịch vụ server, máy chủ hàng đầu Việt Nam",
  "description": "Nhà cung cấp dịch vụ tên miền, máy chủ, Cloud Server, thiết kế website,... uy tín, chất lượng, hàng đầu Việt Nam. Bạn hãy yên tâm lựa chọn sử dụng dịch vụ của BKNS."
}

Có thể thấy qua 2 ví dụ thì JSON sử dụng 2 phần đó là key và value. Và một số lưu ý về cú pháp của JSON như sau:

  • Cấu trúc trong chuỗi JSON được nằm trong dấu ngoặc nhọn {}.
  • Còn các key và value sẽ được đặt trong dấu “”.
  • Sử dụng dấu “,” để phân tách dữ liệu với nhau.
  • Key nên đặt chữ cái không dấu hoặc số.
  • Dấu ngoặc nhọn dành cho đối tượng (object).
  • Dấu ngoặc vuông dành cho mảng (array).

File JSON thường sẽ được lưu với phần mở rộng là .json hoặc .js. Ngoài ra, nó có thể JSON file có thể lưu với nhiều định dạng khác nữa.

Ký hiệu đối tượng JavaScript

Định dạng JSON là gì? Nó hoàn toàn giống với mã để tạo các đối tượng JavaScript. Do sự giống nhau này, JavaScript có thể dễ dàng chuyển đổi dữ liệu JSON thành các đối tượng JavaScript gốc.

Cú pháp JSON có nguồn gốc từ cú pháp ký hiệu đối tượng JavaScript, nhưng định dạng JSON chỉ là văn bản (text). Code để đọc và tạo dữ liệu JSON có thể được viết bằng bất kỳ ngôn ngữ lập trình nào.

Cấu trúc về chuỗi JSON

Cấu trúc về chuỗi JSON
Cấu trúc về chuỗi JSON

Object là gì?

Object trong JSON được thể hiện bằng dấu ngoặc nhọn {}. Object trong JSON cũng khá giống với Object trong JavaScript nhưng có một số điểm giới hạn như:

  • Key (thuộc tính): Phải luôn được đặt trong dấu ngoặc kép “”.
  • Value: Chỉ được sử dụng các kiểu dữ liệu cơ bản như number, string, arrays. objects, null và không được sử dụng funtion, date, hay undefined.
  • Không đặt dấu “,” cuối cùng như bên Object của JavaScript.

Các kiểu Object

Object có 2 kiểu phổ biến là:

  • Object in Array.
  • Nest Object.

Để hiểu rõ hơn về 2 kiểu Object trên, bạn có thể tham khảo qua ví dụ dưới đây:

  • Object in Array:
text
[{
    "name" : "Minh",
    "age" : "29",
    "gender" : "Male",
    "height": "1.77"
},
{
   "name" : "Lam",
   "age" : "23",
   "gender" : "Male",
   "height" : "1m75"
];
  • Nest Object:
text
{
    "Minh" : {
    "name" : "Minh",
    "age" : "29",
    "gender" : "Male",
    "height": "1.77"
},
   "Lam" : {
   "name" : "Lam",
   "age" : "23",
   "gender" : "Male",
   "height" : "1m75"
}
}

Dữ liệu JSON – Name & Value

Dữ liệu JSON được viết dưới dạng cặp name/value, giống như các thuộc tính đối tượng JavaScript. Một cặp name/value bao gồm một tên trường (trong dấu ngoặc kép), theo sau là dấu hai chấm, theo sau là một giá trị:

text
"firstName": "Hailey"

Tên JSON yêu cầu dấu ngoặc kép. Tên JavaScript thì không.

Mảng JSON

Mảng JSON được viết bên trong dấu ngoặc vuông. Giống như trong JavaScript, một mảng có thể chứa các đối tượng:

text
"employees": [
    {"firstName":"Delie", "lastName":"Gordon"},
    {"firstName":"Alex", "lastName":"Will"},
    {"firstName":"Brenny", "lastName":"Brown"}
]

Trong ví dụ trên, đối tượng “nhân viên” là một mảng và nó chứa ba đối tượng. Mỗi đối tượng là một bản ghi của một người (có tên và họ).

Chuyển đổi một văn bản JSON thành một đối tượng JavaScript

Một cách sử dụng JSON phổ biến đó là đọc dữ liệu từ máy chủ web và hiển thị dữ liệu trong trang web. Để đơn giản, điều này có thể được thể hiện bằng cách sử dụng một string làm đầu vào.

  • Đầu tiên, tạo một string JavaScript chứa cú pháp JSON:
text
var text = '{ "employees" : [' +
  '{ "firstName":"Delie" , "lastName":"Gordon" },' +
  '{ "firstName":"Alex" , "lastName":"Will" },' +
  '{ "firstName":"Brenny" , "lastName":"Brown" } ]}';
  • Sau đó, sử dụng hàm tích hợp JavaScript JSON.parse() để chuyển đổi string thành đối tượng JavaScript:
text
var obj = JSON.parse(text);
  • Cuối cùng, sử dụng đối tượng JavaScript mới trong trang của bạn:

Ví dụ

text
<p id="demo"></p>
<script>
  document.getElementById("demo").innerHTML =
  obj.employees[1].firstName + " " + obj.employees[1].lastName;
</script>

Ứng dụng JSON khi nào?

Khi bạn muốn lưu trữ dữ liệu dưới dạng metadata từ phía server. Sau đó, chuỗi JSON sẽ được lưu vào database và khi cần dữ liệu thì nó sẽ được giải mã. Để rõ hơn, thì bạn có thể phát hiện một trường hợp khá phổ biến trong JavaScript mà dữ liệu được định dạng theo format JSON đó là AJAX request.

JSON khác với XML?

JSON khác XML chủ yếu ở cú pháp, dung lượng và tốc độ xử lý, trong đó JSON thắng về sự đơn giản, dung lượng nhẹ và tốc độ phân tích nhanh hơn, còn XML mạnh hơn về khả năng mô tả siêu dữ liệu (metadata) và hỗ trợ namespace. Tuy nhiên, để hiểu rõ bản chất khác biệt giữa hai định dạng này, cần phân tích từng tiêu chí so sánh cụ thể.

Bảng dưới đây tổng hợp các tiêu chuẩn so sánh chính giữa JSON và XML, giúp dễ dàng hình dung các sự khác biệt:

Tiêu chí

JSON

XML

Cú pháp

Cặp key-value đơn giản, dùng {} và []

Cấu trúc thẻ mở/đóng theo dạng cây phân cấp

Dung lượng

Nhẹ hơn do không cần thẻ đóng/mở lặp lại

Nặng hơn vì mỗi phần tử đều có thẻ đóng riêng

Tốc độ xử lý

Phân tích (parse) nhanh hơn nhờ cấu trúc gọn

Xử lý chậm hơn do cấu trúc phức tạp

Khả năng đọc

Dễ đọc, gần với cách tư duy lập trình

Dễ đọc nhưng dài dòng hơn

Hỗ trợ comment

Không hỗ trợ comment trong cú pháp chuẩn

Hỗ trợ comment thông qua thẻ

Hỗ trợ Array

Hỗ trợ trực tiếp bằng dấu ngoặc vuông

Phải biểu diễn gián tiếp qua nhiều thẻ con cùng tên

Ngược lại với JSON, XML lại có lợi thế trong các trường hợp cần mô tả không gian tên hỗn hợp siêu dữ liệu, hỗ trợ để tránh xung đột thẻ tên hoặc khi hệ thống yêu cầu khả năng xác thực dữ liệu nghiêm ngặt qua DTD hoặc Lược đồ XML. Chính vì lý do này, XML vẫn được duy trì trong một số lĩnh vực như tài khoản doanh nghiệp, cấu hình hệ thống cũ (hệ thống kế thừa) hoặc các giao thức trao đổi dữ liệu trong ngành tài chính chính, ngân hàng.

Dù vậy , trong bối cảnh phát triển web và ứng dụng hiện đại, JSON vẫn đang được ưu tiên áp dụng nhờ tốc độ xử lý nhanh chóng và khả năng kết hợp liền mạch với JavaScript – ngôn ngữ phổ biến nhất trong giao diện người dùng phát triển.

Lời kết

Bài viết trên, BKNS đã tổng hợp những thông tin và kiến thức cần thiết nhất giúp bạn hiểu rõ hơn về JSON là gì?. Hy vọng qua bài viết này sẽ giúp ích cho bạn trong các công việc cần thiết.

Đọc thêm các bài viết hữu ích và tương tự trên BKNS nữa bạn nhé.

>> Đọc thêm các bài viết khác: