Skip to main content

JS 内置对象之 JSON

JSON(javascript object notation)全称是 javascript 对象表示法,是一种数据交换的文本格式,用于读取结构化数据,提出目的是取代繁琐笨重的 XML 格式。

JSON 对象只有两个方法:

  • 用于解析 JavaScript Object Notation (JSON) 的 parse() 方法
  • 将对象/值转换为 JSON 字符串的 stringify() 方法。

除了这两个方法, JSON 这个对象本身并没有其他作用,也不能被调用或者作为构造函数调用。 JavaScript 的 eval() 类似于 JSON.parse() 方法,可以将 JSON 字符串转换为 JS 对象,但是 eval() 可以执行不符合 JSON 格式的代码,有可能会包含恶意代码,所以尽量少用。

一、方法

1、parse

JSON.parse(text[, reviver])

功能:将 JSON 字符串反序列化成 JS 对象。

参数:

  • text(必须):JSON 字符串。
  • reviver(可选):转换器, 用来修改解析生成的原始值,调用时机在 parse 函数返回之前。

返回值:JS 对象。

示例:

const json = '{"name":"Tim", "age":23}';
const obj = JSON.parse(json);

console.log(obj); // {name: 'Tim', age: 23}
console.log(obj.name); // Tim
console.log(obj.age); // 23

2、stringify

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

功能:将 JS 对象解析为 JSON 字符串。

参数:

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

返回值:JSON 字符串。

示例:

const obj = {name: 'Tim', age: 23};
const json = JSON.stringify(obj);

console.log(json); // ‘{"name":"Tim","age":23}’