JSON

json是一种数据格式,不是一种编程语言。
json是一种轻量级的数据格式,可以简化表示复杂数据结构的工作量。

1、语法
①json字符串必须使用双引号
②没有声明变量
③没有末尾分号
④json对象中的属性名必须加双引号

json的语法可以表示三种类型的值
简单值:使用与js相同的语法,可以在json中表示字符串、数值、布尔值和null。(不支持undefined)

"hello world"

对象:

{
     "name":"Ewall",
     "age":21
}

数组:

[25,"ewall",true]

2、JSON对象
两个方法:stringfy( ):把js对象序列化为json字符串
                  parse( ):把json字符串解析为原生js值

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person);
console.log(jsonText);

3、JSON.stringfy( )的具体用法
该方法可以传入三个参数,第一个参数是要序列化的对象;第二个是个过滤器(可以是数组或者是函数);第三个是一个选项,表示是否在JSON字符串中保留缩进。
①当过滤器是数组,那么该方法返回的结果将只包含数组中列出的属性

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person,["name","year"]);

console.log(jsonText); //{"name":"Ewall","year":2017}

②当过滤器是函数。传入的函数接收两个参数,属性名和属性值,根据属性名可以知道应该如何处理要序列化的对象中的属性。

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person,function(key,value){
    switch(key){
        case "friends":
            return value.join(",");
        case "year":
            return undefined;  //通过返回undefined删除该属性
        default:
            return value;
    }
});
console.log(jsonText); //{"name":"Ewall","friends":"joe,frank","edition":3}

4、JSON.parse( )方法的具体用法
接收两参数:第一个参数是要序列化的对象;第二个参数是个还原函数。
在将日期字符串转换为Date对象是,经常要用到还原函数。

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017,
    releaseDate:new Date()
};
var jsonText=JSON.stringify(person);
console.log(jsonText);

var bookCopy=JSON.parse(jsonText,function(key,value){
    if(key=="releaseDate"){
        return new Date(value);  //基于相应的json值创建一个新的Date对象
    }else{
        return value;
    }
});
console.log(bookCopy.releaseDate);
上一篇:到目前为止,生活教会给你最重要的一件事是什么?


下一篇:libevent IOCP完整教程