序列化一個值
可以使用 JSON.stringify
函式將 JavaScript 值轉換為 JSON 字串。
JSON.stringify(value[, replacer[, space]])
value
要轉換為 JSON 字串的值。
/* Boolean */ JSON.stringify(true) // 'true'
/* Number */ JSON.stringify(12) // '12'
/* String */ JSON.stringify('foo') // '"foo"'
/* Object */ JSON.stringify({}) // '{}'
JSON.stringify({foo: 'baz'}) // '{"foo": "baz"}'
/* Array */ JSON.stringify([1, true, 'foo']) // '[1, true, "foo"]'
/* Date */ JSON.stringify(new Date()) // '"2016-08-06T17:25:23.588Z"'
/* Symbol */ JSON.stringify({x:Symbol()}) // '{}'
replacer
一種改變字串化過程行為的函式,或者一個 String 和 Number 物件陣列,用作白名單,用於過濾要包含在 JSON 字串中的值物件的屬性。如果此值為 null 或未提供,則物件的所有屬性都包含在生成的 JSON 字串中。
// replacer as a function
function replacer (key, value) {
// Filtering out properties
if (typeof value === "string") {
return
}
return value
}
var foo = { foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7 }
JSON.stringify(foo, replacer)
// -> '{"week": 45, "month": 7}'
// replacer as an array
JSON.stringify(foo, ['foundation', 'week', 'month'])
// -> '{"foundation": "Mozilla", "week": 45, "month": 7}'
// only the `foundation`, `week`, and `month` properties are kept
space
為了便於閱讀,可以將用於縮排的空格數指定為第三個引數。
JSON.stringify({x: 1, y: 1}, null, 2) // 2 space characters will be used for indentation
/* output:
{
'x': 1,
'y': 1
}
*/
或者,可以提供字串值以用於縮排。例如,傳遞'\t'
將導致製表符用於縮排。
JSON.stringify({x: 1, y: 1}, null, '\t')
/* output:
{
'x': 1,
'y': 1
}
*/