Bỏ qua để đến nội dung

Structured Data — JSON

JSON (viết tắt của JavaScript Object Notation) là định dạng trao đổi dữ liệu nhẹ (lightweight data interchange format), được dùng phổ biến để lưu trữ và truyền dữ liệu giữa server và client.

Nhẹ & Dễ đọc

Cú pháp đơn giản, tương tự Object literal trong JS

Ngôn ngữ độc lập

Hầu hết ngôn ngữ đều hỗ trợ parse/stringify JSON

Tiêu chuẩn web

Định dạng chính cho REST API, localStorage, file config


JSON chỉ hỗ trợ 6 kiểu giá trị: string, number, boolean, null, array, object.

Gồm các cặp key–value, viết trong dấu {}. Key bắt buộc là chuỗi (có dấu nháy kép).

{
"name": "An Giang",
"age": 21,
"student": true
}

const obj = { name: "An", age: 21, hobbies: ["code", "music"] };
// Cơ bản
const json = JSON.stringify(obj);
// '{"name":"An","age":21,"hobbies":["code","music"]}'
// Đẹp hơn (indented)
const pretty = JSON.stringify(obj, null, 2);
/*
{
"name": "An",
"age": 21,
"hobbies": [
"code",
"music"
]
}
*/
const json = '{"name":"An","age":21}';
const obj = JSON.parse(json);
console.log(obj.name); // "An"
console.log(obj.age); // 21

Lọc hoặc biến đổi giá trị khi stringify:

const user = { name: "An", password: "secret", age: 21 };
// Chỉ giữ một số key
JSON.stringify(user, ["name", "age"]);
// '{"name":"An","age":21}'
// Dùng function
JSON.stringify(user, (key, val) => {
if (key === "password") return undefined; // loại bỏ
return val;
});


const original = { a: 1, b: { c: 2 } };
// Clone nhanh (có giới hạn)
const clone = JSON.parse(JSON.stringify(original));
clone.b.c = 99;
console.log(original.b.c); // 2 (không bị ảnh hưởng)

REST API

Gửi/nhận dữ liệu qua HTTP (fetch, axios)

localStorage

Lưu trữ dữ liệu phía client

localStorage.setItem("user", JSON.stringify(user));
const u = JSON.parse(localStorage.getItem("user"));

Config files

package.json, tsconfig.json, .eslintrc.json

Data exchange

Trao đổi dữ liệu giữa các ngôn ngữ/hệ thống khác nhau