JavaScript 中的 JSON.stringify() 方法

发布于 2022-08-17 23:53:55 字数 3087 浏览 158 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

黑色毁心梦

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文