JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。

JSON实际上是JavaScript的一个子集。在JSON中,一共就这么几种数据类型:

  • number:和JavaScript的number完全一致;
  • boolean:就是JavaScript的truefalse
  • string:就是JavaScript的string
  • null:就是JavaScript的null
  • array:就是JavaScript的Array表示方式——[]
  • object:就是JavaScript的{ ... }表示方式。

为了统一解析,JSON的KEY和VALUE都必须用""

JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机;

JSON.stringify(object)

  1. JSON.stringify(value[, replacer [, space]])

value将要序列化成 一个 JSON 字符串的值。

replacer 可选如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。

  1. const user = {
  2. id: 1234,
  3. username: 'johnsmith',
  4. name: 'John Smith',
  5. age: 39
  6. };
  7. JSON.stringify(user, ['username', 'name']);
  8. // '{ "username": "johnsmith", "name": "John Smith" }'

space 可选指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。

JSON.parse()

如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。

JSON.stringify() 第一大特性总结

  • undefined、任意的函数以及 symbol 作为对象属性值时 JSON.stringify() 对跳过(忽略)它们进行序列化
  • undefined、任意的函数以及 symbol 作为数组元素值时,JSON.stringify() 将会将它们序列化为 null
  • undefined、任意的函数以及 symbolJSON.stringify() 作为单独的值进行序列化时,都会返回 undefined

参考