Sử dụng JSON.parse() và JSON.stringify() như thế nào cho đúng?
Bài đăng này đã không được cập nhật trong 5 năm
Giới thiệu
Đối tượng JSON, có sẵn trong tất cả các trình duyệt hiện đại, có hai phương pháp hữu ích để xử lý nội dung có định dạng JSON: parse và stringify. JSON.parse() nhận một chuỗi JSON và biến nó thành một đối tượng JavaScript. JSON.stringify() nhận một đối tượng JavaScript và chuyển đổi nó thành một chuỗi JSON.
Cùng xem một ví dụ ở dưới đây nhé:
var myObj = {
id: 1,
name: 'Haruki',
age: 24
};
console.log(typeof(myObj));
// object
var myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"id":1,"name":"Haruki","age":24}"
console.log(typeof(myObjStr));
// string
console.log(JSON.parse(myObjStr));
// {id: 1, name: "Haruki", age: 24}
console.log(typeof(JSON.parse(myObjStr)));
// object
Chúng cũng có thể được sử dụng trên các mảng:
var myArr = ['spring', 'summer', 'autumn', 'winter'];
console.log(Array.isArray(myArr));
// true
var myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["spring","summer","autumn","winter"]"
console.log(typeof(myArrStr));
// string
console.log(JSON.parse(myArrStr));
// ["spring","summer","autumn","winter"]
console.log(Array.isArray(JSON.parse(myArrStr)));
// true
JSON.parse()
JSON.parse () có thể nhận một function làm đối số thứ hai có thể biến đổi các giá trị đối tượng trước khi chúng được trả về. Tại đây, các giá trị của đối tượng được chuyển thành chữ hoa trong đối tượng trả về của phương thức parse:
var user = {
name: 'haruki',
email: 'haruki@gmail.com'
};
var userStr = JSON.stringify(user);
JSON.parse(userStr, (key, value) => {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
});
// {name: "HARUKI", email: "HARUKI@GMAIL.COM"}
JSON.stringify()
JSON.stringify() có thể nhận thêm hai đối số, đối số đầu tiên là hàm replacer và đối số thứ hai là giá trị String hoặc Number để sử dụng như space trong chuỗi được trả về.
Hàm replacer được sử dụng để lọc ra các giá trị, vì bất kỳ giá trị nào được trả về là replacer sẽ nằm ngoài chuỗi trả về:
var user = {
name: 'haruki',
email: 'haruki@gmail.com'
};
function replacer(key, value) {
console.log(typeof value);
if (key === 'email') {
return undefined;
}
return value;
}
var userStr = JSON.stringify(user, replacer);
// {"name": "haruki"}
Và một ví dụ với đối số space được truyền vào:
var user = {
name: 'haruki',
email: 'haruki@gmail.com'
};
var userStr = JSON.stringify(user, null, "...");
console.log(userStr);
// {
// ..."name": "haruki",
// ..."email": "haruki@gmail.com"
// }
Tham khảo
https://www.digitalocean.com/community/tutorials/js-json-parse-stringify
All rights reserved