JSON.stringify()函数 是将 JavaScript 对象转换为 JSON 字符串 。
几乎每个处理 HTTP 请求或响应的 npm 模块,例如 Axios 或 Express ,都使用 JSON.stringify() 在引擎盖下。
第 一个参数 JSON.stringify() 是个 value 转换为 JSON。
const obj = { answer: 42 };
const arr = ['hello', 'world'];
typeof JSON.stringify(obj); // 'string'
JSON.stringify(obj); // '{"answer":42}'
JSON.stringify(arr); // '["hello","world"]'
JSON 只能表示以下类型的值:
您可能会注意到此列表不包括一些 JavaScript 的内置类型 。 具体来说,JSON 不能代表 JavaScript undefined、符号或 BigInts 。 JSON.stringify() 默默无视 undefined 值和符号值。
let obj = { undef: undefined, symbol: Symbol('foo') };
// JSON.stringify() ignores `undefined` and symbols
JSON.stringify(obj); // '{}'
JSON.stringify() 如果找到 BigInt 值,则会引发错误。
// TypeError: Do not know how to serialize a BigInt
JSON.stringify({ val: 42n });
此列表还排除了 JavaScript 对象,例如 JavaScript 日期 。JSON.stringify() 函数将 JavaScript 日期转换为字符串 。
// '{"date":"2019-06-01T00:00:00.000Z"}'
JSON.stringify({ date: new Date('2019-06-01') });
第二个论点 JSON.stringify() 是一个替换函数。 JavaScript 为对象中的每个键/值对调用此函数,并使用返回值。
如果替换函数返回 undefined,该键从 JSON 输出中省略。
例如,假设您想剥离 null 使用替换函数的值:
const obj = { answer: 42, test: null };
// '{"answer":42}'
JSON.stringify(obj, function replacer(key, value) {
if (value === null) {
return undefined;
}
return value;
});
第三个参数 JSON.stringify() 叫做 space,此参数应该是字符串或数字,它告诉 JavaScript 以人类可读的方式格式化 JSON。 如果您指定一个 space 参数,JavaScript 会将每个键/值对放在自己的行上,并在每行前面加上 space。
const obj = { firstName: 'Jean-Luc', lastName: 'Picard' };
// {
// "firstName": "Jean-Luc",
// "lastName": "Picard"
// }
JSON.stringify(obj, null, ' ');
// Equivalent, JavaScript treats `space=2` as equivalent to 2 spaces.
JSON.stringify(obj, null, 2);
