您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

JavaScript 中的 JSON.stringify() 方法

时间:12-14来源:作者:点击数:

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);
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐