JSON.stringify()
是一個(gè) JSON 對(duì)象的方法,用于將一個(gè) JavaScript 值轉(zhuǎn)換為一個(gè) JSON 字符串。
JSON.stringify(value[, replacer[, space]])
value
:必需,要轉(zhuǎn)換成 JSON 字符串的值。
replacer
:可選,用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。如果是函數(shù),則在轉(zhuǎn)換過程中,被轉(zhuǎn)換的值會(huì)傳遞給這個(gè)函數(shù),并最終返回轉(zhuǎn)換結(jié)果。如果是數(shù)組,則只有包含在這個(gè)數(shù)組中的屬性名才會(huì)被轉(zhuǎn)換到 JSON 字符串中。
space
:可選,用于美化輸出的字符串??梢允且粋€(gè)字符串,用于指定縮進(jìn)的空白字符,也可以是一個(gè)正整數(shù),表示縮進(jìn)的空格數(shù)。
一個(gè)表示給定值的 JSON 字符串。
// 將一個(gè) JavaScript 對(duì)象轉(zhuǎn)換為 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"}
// 將一個(gè)數(shù)組轉(zhuǎn)換為 JSON 字符串
const arr = [1, 2, 3, 4, 5];
const jsonArr = JSON.stringify(arr);
console.log(jsonArr);
// 輸出:[1,2,3,4,5]
// 使用 replacer 函數(shù)過濾轉(zhuǎn)換的屬性
const obj2 = { name: "John", age: 30, city: "New York" };
const jsonStr2 = JSON.stringify(obj2, ["name", "age"]);
console.log(jsonStr2);
// 輸出:{"name":"John","age":30}
// 使用 replacer 函數(shù)修改轉(zhuǎn)換的屬性
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 參數(shù)美化輸出
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"
// }
轉(zhuǎn)換過程中,undefined
、function
和 symbol
類型的屬性會(huì)被自動(dòng)忽略。
如果一個(gè)屬性值為 NaN
、Infinity
或 -Infinity
,則會(huì)被轉(zhuǎn)換成 null
。
如果 replacer
是一個(gè)數(shù)組,但數(shù)組中的元素不是字符串,則會(huì)被忽略。
JSON.stringify()
方法不會(huì)轉(zhuǎn)換對(duì)象的原型鏈上的屬性。
如果對(duì)象中存在循環(huán)引用,則會(huì)拋出 TypeError
。
在轉(zhuǎn)換過程中,對(duì)于非法的 JSON 值(例如 Infinity
、-Infinity
和 NaN
),會(huì)將其轉(zhuǎn)換成 null
。
自定義對(duì)象的屬性值如果含有函數(shù)(方法),則在轉(zhuǎn)換為 JSON 字符串時(shí)會(huì)被忽略。
對(duì)象的屬性名如果為非字符串類型,會(huì)被自動(dòng)轉(zhuǎn)換為字符串。
轉(zhuǎn)換一個(gè) JavaScript 值時(shí),可以通過在該值上添加 toJSON()
方法,來自定義值的轉(zhuǎn)換過程。