JSON(JavaScript Object Notation)

Tags
javascript
Created
Nov 27, 2015 5:17 AM

是一种数据交换语言。是Javascript的一个子集。

json不支持函数属性

只支持数字(必须是十进制),字符串,布尔值,null(NaN, Infinity, -Infinity和undefined都会被转为null)的简单值或复合值(json对象或json数组)。//原始对象中,有一个成员的值是undefined、函数或XML对象,这个成员会被省略

数组或对象最后成员不能加逗号

字符串必须使用双引号,不能用单引号

对象成员名称必须使用双引号//ps: es6中对象属性名可以是变量[var]

正则对象会被转成空对象。

JSON.stringify方法会忽略对象的不可遍历属性。

JSON.stringify把整个JSON对象当做第一个建,键名为空

JSON.stringify递归处理中,每一次处理的对象,都是前一次返回的值。

如果处理函数返回undefined或没有返回值,则该属性会被忽略。

JSON.stringify第三个参数表示添加空格或将字符添加到行头

JSON.stringify方法处理的对象,如果包含一个toJSON方法,则它会使用这个方法得到一个值,然后再将这个值转成字符串,而忽略其他成员。Date对象就部署了一个自己的toJSON方法。

模板字符串(实际上含有表达式)不能被JSON.parse正确解析(变成普通字符串)

由于对象的属性无序,所以JSON.stringify序列号对象的字符串不一定每次都一样。

var foo = {};

foo.bar = "new property";

foo.baz = 3;

JSON.stringify(foo,function(key,value){

if (value !== 3) {

return undefined;

//迭代处理使用返回的结果,第一次处理的key是整个json

}

return value;

});

JSON.stringify的函数参数:对于对象和数组有不同的处理,如果是数组,函数返回不支持的对象如undefined时将用null替换,而序列号对象时则不添加该键值对。返回对象能递归应用。返回函数直接忽略。

foo = [2,3,"23"]

JSON.stringify(foo,function(key,value){

if (value == 2) {

return undefined;

}

return value;

});

SuperMade with Super