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 文本的对象/值。
原文地址:https://www.cnblogs.com/jserhub/p/13901359.html