JSON 方法:JSON.stringify()、JSON.parse()
JavaScript Object Notation (JSON)
JSON.stringify():将一个 JavaScript 对象或值转换为 JSON 字符串。
- 语法:JSON.stringify(value[, replacer [, space]])
- 参数:
- value:将要序列化成 一个 JSON 字符串的值。
- replacer(可选):
如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;
如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的JSON 字符串中;
如果该参数为 null或者未提供,则对象所有的属性都会被序列化。 - space(可选):指定缩进用的空白字符串,用于美化输出 (pretty-print);
如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;
如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;
如果该参数没有提供(或者为 null),将没有空格。
- 返回值:一个表示给定值的JSON字符串。
-
JSON.stringify()将值转换为相应的JSON格式:
- undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。
- 函数、undefined 被单独转换时,会返回 undefined,如JSON.stringify(function(){}) or JSON.stringify(undefined).
- NaN 和 Infinity 格式的数值及 null 都会被当做 null。
- 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
const obj = { stringKey: 'str', numberKey: 123, booleanKey: false, nullKey: null, undefinedKey: undefined, symbolKey: Symbol('symbol'), fn: () => {}, arr: ['str', 123, false, null, undefined, Symbol('symbol'), () => {}] };
JSON.stringify(obj); // {"stringKey":"str","numberKey":123,"booleanKey":false,"nullKey":null,"arr":["str",123,false,null,null,null,null]}
const obj = { foo: 'bar', bar: 'baz' }; JSON.stringify(obj, null, 2); /* { foo: 'bar', bar: 'baz' } */
const obj = { foo: 'bar', bar: 'baz' }; JSON.stringify(obj, ['foo']); // {"foo":"bar"}
JSON.parse() :用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。
- 语法:JSON.parse(text[, reviver])
- 参数:
- text:要被解析成 JavaScript 值的字符串。
- reviver(可选):转换器, 如果传入该参数(函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前。
- 返回值:Object 类型, 对应给定 JSON 文本的对象/值。