JSON.stringify()
是一個 JSON 對象的方法,用于將一個 JavaScript 值轉換為一個 JSON 字符串。
JSON.stringify(value[, replacer[, space]])
value
:必需,要轉換成 JSON 字符串的值。
replacer
:可選,用于轉換結果的函數或數組。如果是函數,則在轉換過程中,被轉換的值會傳遞給這個函數,并最終返回轉換結果。如果是數組,則只有包含在這個數組中的屬性名才會被轉換到 JSON 字符串中。
space
:可選,用于美化輸出的字符串。可以是一個字符串,用于指定縮進的空白字符,也可以是一個正整數,表示縮進的空格數。
一個表示給定值的 JSON 字符串。
// 將一個 JavaScript 對象轉換為 JSON 字符串
const obj = { name: "John", age: 30, city: "New York" };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr);
// 輸出:{"name":"John","age":30,"city":"New York"}
// 將一個數組轉換為 JSON 字符串
const arr = [1, 2, 3, 4, 5];
const jsonArr = JSON.stringify(arr);
console.log(jsonArr);
// 輸出:[1,2,3,4,5]
// 使用 replacer 函數過濾轉換的屬性
const obj2 = { name: "John", age: 30, city: "New York" };
const jsonStr2 = JSON.stringify(obj2, ["name", "age"]);
console.log(jsonStr2);
// 輸出:{"name":"John","age":30}
// 使用 replacer 函數修改轉換的屬性
const obj3 = { name: "John", age: 30, city: "New York" };
const jsonStr3 = JSON.stringify(obj3, (key, value) => {
if (key === "name") {
return value.toUpperCase();
}
return value;
});
console.log(jsonStr3);
// 輸出:{"name":"JOHN","age":30,"city":"New York"}
// 使用 space 參數美化輸出
const obj4 = { name: "John", age: 30, city: "New York" };
const jsonStr4 = JSON.stringify(obj4, null, 2);
console.log(jsonStr4);
// 輸出:
// {
// "name": "John",
// "age": 30,
// "city": "New York"
// }
轉換過程中,undefined
、function
和 symbol
類型的屬性會被自動忽略。
如果一個屬性值為 NaN
、Infinity
或 -Infinity
,則會被轉換成 null
。
如果 replacer
是一個數組,但數組中的元素不是字符串,則會被忽略。
JSON.stringify()
方法不會轉換對象的原型鏈上的屬性。
如果對象中存在循環引用,則會拋出 TypeError
。
在轉換過程中,對于非法的 JSON 值(例如 Infinity
、-Infinity
和 NaN
),會將其轉換成 null
。
自定義對象的屬性值如果含有函數(方法),則在轉換為 JSON 字符串時會被忽略。
對象的屬性名如果為非字符串類型,會被自動轉換為字符串。
轉換一個 JavaScript 值時,可以通過在該值上添加 toJSON()
方法,來自定義值的轉換過程。