Skip to content

JSON Javascript API

JSON 常用于客户端与服务器进行数据交换,而客户端接收到服务器传送过来的 JSON 数据一般是字符串。

字符串的数据无法直接操作,这时候我们需要将数据转换为 Javascript 对象。

JSON.parse()

使用 JSON.parse() 方法将 JSON 字符串转换为 JavaScript 对象。

语法

JSON.parse(text[, reviver])
1

参数说明

  • text:必需参数。要被解析成 JavaScript 值的字符串。
  • reviver:可选参数。一个转换结果的函数, 将为对象的每个成员调用此函数。

使用示例

  • 解析服务端接口返回的响应数据
{
  "data": "生产测试",
  "code": "200",
  "msg": "OK"
}
1
2
3
4
5

使用 JSON.parse() 解析上面的数据。

const obj = JSON.parse('{ "data": "生成测试", "code": "200", "msg": "OK" }');
// 解析完成后就可以使用 JSON 数据了
console.log(obj.data) // 输出 生成测试
1
2
3
  • 解析浏览器缓存

localStorage/sessionStorage 中是以 JSON 字符串存储的,在使用前需要解析。

const data = JSON.parse(localStorage.getItem('data'))
const session = JSON.parse(sessionStorage.getItem('session'))
1
2
  • 其他类型的解析
JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');              // null
1
2
3
4
5

JSON.parse() 不允许用逗号作为结尾,否则会抛出 SyntaxError 异常。

// 抛出 SyntaxError 异常
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"foo" : 1, }');
1
2
3

解析前要确保数据是标准的 JSON 格式,否则也会解析出错。

JSON.stringify()

使用 JSON.stringify() 方法将 JavaScript 对象转换为 JSON 字符串。

语法

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

参数说明

  • value:必需参数。将要序列化成 一个 JSON 字符串的值。
  • replacer:可选参数。用于转换结果的函数或数组。 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。
  • space:可选参数。指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为 10。该值若小于 1,则意味着没有空格;如果该参数为字符串(当字符串长度超过 10 个字母,取其前 10 个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。

使用示例

  • 浏览器缓存存储

当我们要将下面的数据存入浏览器缓存(localStorage/sessionStorage)中时,需要使用 JSON.stringify() 。

const data = { name: 'devcursor', feature: ['good'] }
localStorage.setItem('data', JSON.stringify(data))
// 或者
sessionStorage.setItem('data', JSON.stringify(data))
1
2
3
4
  • 其他类型的序列化
JSON.stringify({});                        // '{}'
JSON.stringify(true);                      // 'true'
JSON.stringify("foo");                     // '"foo"'
JSON.stringify([1, "false", false]);       // '[1,"false",false]'
JSON.stringify({ x: 5 });                  // '{"x":5}'

JSON.stringify({x: 5, y: 6});
// "{"x":5,"y":6}"
1
2
3
4
5
6
7
8
  • space 参数使用
JSON.stringify({ a: 2 }, null, " ");   // '{\n "a": 2\n}'
JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
// '{            \
//     "uno": 1, \
//     "dos": 2  \
// }'
1
2
3
4
5
6
JSON Javascript API has loaded