JavaScript 中的 JSON.stringify() 方法
JSON.stringify()
函数 是将 JavaScript 对象转换为 JSON 字符串 。
几乎每个处理 HTTP 请求或响应的 npm 模块,例如 Axios 或 Express ,都使用 JSON.stringify()
在引擎盖下。
将值转换为 JSON
第 一个参数 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 只能表示以下类型的值:
- 字符串
- 数字
- 对象
- 数组
- 布尔值
null
您可能会注意到此列表不包括一些 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;
});
Pretty Printing
第三个参数 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);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JavaScript 中的类介绍和使用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论