JSON包含的方法

JSON.parse()

解析JSON字符串并返回对应的值,可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。

JSON.stringify()

返回与指定值对应的JSON字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些key对应的属性值。

JSON.parse() 方法

不允许在末尾添加多余的逗号

下面两行代码都会抛出错误:

JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
// SyntaxError JSON.parse: unexpected character 
// at line 1 column 14 of the JSON data

省略末尾多余的逗号解析 JSON 就是正确:

JSON.parse('[1, 2, 3, 4 ]');
JSON.parse('{"foo" : 1 }');

 

JSON 的属性名必须使用双引号

属性名上不能使用单引号,例如: 'foo'。

JSON.parse("{'foo' : 1 }");
// SyntaxError: JSON.parse: expected property name or '}' 
// at line 1 column 2 of the JSON data

取而代之,写成 "foo":

JSON.parse('{"foo" : 1 }');

前导 0 和小数点

数字不能用 0 开头,比如01,并且你的小数点后面必须跟着至少一个数字。

JSON.parse('{"foo" : 01 }');
// SyntaxError: JSON.parse: expected ',' or '}' after property value 
// in object at line 1 column 2 of the JSON data

JSON.parse('{"foo" : 1. }'); 
// SyntaxError: JSON.parse: unterminated fractional number 
// at line 1 column 2 of the JSON data

正确的写法应该是只写一个1,不书写前面的0。在小数点的后面至少要跟上一个数字:

JSON.parse('{"foo" : 1 }');
JSON.parse('{"foo" : 1.0 }');

 JSON.stringify()方法 

JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。

语法

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

参数

value

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

replacer 可选

如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化;关于该参数更详细的解释和示例,请参考使用原生的 JSON 对象一文。

space 可选

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

返回值 

一个表示给定值的JSON字符串。

具体内容详见:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify