JSON.stringify()方法用于將JavaScript對象轉換為一個JSON字符串。它有以下用法:
let obj = { name: "John", age: 30 };
let jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"John","age":30}
可以使用第二個參數來控制屬性的輸出。
let obj = { name: "John", age: 30 };
let jsonStr = JSON.stringify(obj, ["name"]);
console.log(jsonStr); // {"name":"John"}
let obj = { name: "John", age: 30 };
let jsonStr = JSON.stringify(obj, (key, value) => {
if (key === "name") {
return value.toUpperCase();
}
return value;
});
console.log(jsonStr); // {"name":"JOHN","age":30}
可以使用第三個參數來實現美化輸出。
let obj = { name: "John", age: 30 };
let jsonStr = JSON.stringify(obj, null, 2);
console.log(jsonStr);
/*
{
"name": "John",
"age": 30
}
*/
如果對象存在循環引用,可以使用第二個參數的replacer函數來處理。
let obj = { name: "John" };
obj.self = obj;
let jsonStr = JSON.stringify(obj, (key, value) => {
if (key === "self") {
return undefined;
}
return value;
});
console.log(jsonStr); // {"name":"John"}
默認情況下,Date對象會被轉換為ISO 8601格式的字符串。
let obj = { date: new Date() };
let jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"date":"2021-11-10T12:00:00.000Z"}
可以使用replacer函數來自定義Date對象的序列化方式。
let obj = { date: new Date() };
let jsonStr = JSON.stringify(obj, (key, value) => {
if (value instanceof Date) {
return value.getTime();
}
return value;
});
console.log(jsonStr); // {"date":1636550400000}
注意:JSON.stringify()方法無法處理函數、正則表達式、undefined等特殊類型的數據。