JSON – Từ Cơ Bản đến Nâng Cao

1. JSON là gì?

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu nhẹ, dễ đọc, dễ ghi cho con người, và dễ phân tích, sinh dữ liệu cho máy tính. JSON được sử dụng phổ biến trong lập trình web, API, và nhiều hệ thống lưu trữ cấu hình.

Đặc điểm chính:

  • Dạng văn bản (text-based), mã hóa bằng UTF-8.
  • Dễ hiểu, dễ phân tích (parse).
  • Độc lập ngôn ngữ, nhưng cú pháp dựa trên JavaScript.
  • Thích hợp để trao đổi dữ liệu giữa máy chủ và trình duyệt.

Ví dụ một đối tượng JSON:

{

  “name”: “Nguyễn Văn A”,

  “age”: 25,

  “email”: “example@gmail.com”,

  “skills”: [“JavaScript”, “PHP”, “Python”],

  “isActive”: true

}

2. Cấu trúc cơ bản của JSON

JSON gồm hai kiểu cấu trúc chính:

  1. Đối tượng (Object)
    • Bao gồm các cặp key–value.
    • Được bao bọc bởi {}.
    • Key bắt buộc là chuỗi (string) đặt trong dấu ngoặc kép ” “.
    • Value có thể là: string, number, boolean, null, object, array.

  2. Ví dụ:

{

  “username”: “trungvu”,

  “points”: 100

}


  1. Mảng (Array)
    • Danh sách các giá trị, phân tách bằng dấu phẩy.
    • Được bao bọc bởi [].

  2. Ví dụ:

[“HTML”, “CSS”, “JavaScript”]

3. Kiểu dữ liệu hợp lệ trong JSON

JSON hỗ trợ 6 kiểu dữ liệu:

  1. String – Chuỗi ký tự trong dấu ngoặc kép ” “
  2. Number – Số nguyên hoặc số thực
  3. Boolean – true hoặc false
  4. Null – Giá trị rỗng null
  5. Object – Dạng { key: value }
  6. Array – Dạng [value1, value2, …]

Ví dụ kết hợp:

{

  “id”: 101,

  “name”: “Laptop”,

  “price”: 1500.75,

  “inStock”: true,

  “tags”: [“electronics”, “computer”],

  “details”: {

    “brand”: “Dell”,

    “model”: “XPS 15”

  },

  “discount”: null

}

4. JSON trong JavaScript (Cơ bản)

JavaScript cung cấp sẵn hai hàm làm việc với JSON:

  • JSON.stringify(obj) – Chuyển Object → JSON string
  • JSON.parse(jsonString) – Chuyển JSON string → Object

Ví dụ:

// Object → JSON

let user = { name: “Trung”, age: 30 };

let jsonData = JSON.stringify(user);

console.log(jsonData); // {“name”:”Trung”,”age”:30}

// JSON → Object

let jsonString = ‘{“name”:”Trung”,”age”:30}’;

let obj = JSON.parse(jsonString);

console.log(obj.name); // Trung

5. JSON nâng cao

5.1. JSON Lồng nhau (Nested JSON)

JSON có thể chứa Object hoặc Array bên trong nhau.

{

  “company”: “TechCorp”,

  “departments”: [

    {

      “name”: “IT”,

      “employees”: [

        { “id”: 1, “name”: “A” },

        { “id”: 2, “name”: “B” }

      ]

    },

    {

      “name”: “HR”,

      “employees”: []

    }

  ]

}

5.2. Làm việc với JSON trong PHP

PHP có hai hàm:

  • json_encode($array) – Array/Object → JSON string.
  • json_decode($json, true) – JSON string → Array (nếu true) hoặc Object.

Ví dụ:

// Array → JSON

$data = [“name” => “Trung”, “age” => 30];

$json = json_encode($data);

echo $json; // {“name”:”Trung”,”age”:30}

// JSON → Array

$jsonString = ‘{“name”:”Trung”,”age”:30}’;

$array = json_decode($jsonString, true);

echo $array[“name”]; // Trung

5.3. JSON trong API

JSON là định dạng mặc định của hầu hết các REST API.

Ví dụ response từ API:

{

  “status”: “success”,

  “data”: {

    “id”: 1,

    “title”: “Bài viết JSON”

  }

}

5.4. JSON Schema – Xác thực dữ liệu

Để đảm bảo dữ liệu JSON đúng định dạng, ta dùng JSON Schema.

Ví dụ Schema:

{

  “type”: “object”,

  “properties”: {

    “name”: { “type”: “string” },

    “age”: { “type”: “number” }

  },

  “required”: [“name”, “age”]

}

Công dụng: xác thực dữ liệu khi nhận từ API.

5.5. Tối ưu JSON (Minify & Pretty)

  • Minify: Loại bỏ khoảng trắng để giảm dung lượng.
  • Pretty Print: Thêm tab, xuống dòng để dễ đọc.

Trong JavaScript:

JSON.stringify(obj, null, 2); // Pretty print

6. Ưu và nhược điểm của JSON

Ưu điểm:

  • Nhẹ, dễ đọc, dễ ghi.
  • Phổ biến, được hỗ trợ hầu hết ngôn ngữ.
  • Chuyển đổi nhanh chóng giữa object và string.

Nhược điểm:

  • Không hỗ trợ comment.
  • Không lưu được các kiểu dữ liệu phức tạp như hàm (function), Date phải chuyển sang string.

7. Kết luận

JSON là định dạng dữ liệu chuẩn mực trong lập trình hiện đại, đặc biệt cho web và API. Việc nắm vững từ cơ bản đến nâng cao giúp bạn:

  • Trao đổi dữ liệu giữa client–server dễ dàng.
  • Tích hợp API nhanh chóng.
  • Xử lý dữ liệu cấu hình, lưu trữ linh hoạt.

Bình luận

Để lại một bình luận