JavaScript基础——JSON

来源:互联网 发布:扣扣闪图制作软件 编辑:程序博客网 时间:2024/05/16 13:52

JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工程量。

JSON使用JavaScript语法的子集表示对象、数组、字符串、数组、布尔值和null。

即使XML也能表示同样复杂的数据结果,但JSON没有那么繁琐,而且在JavaScript中使用更便利。

ECMAScript5定义了一个原生的JSON对象,可以用来将对象序列化微JSON字符串或者将JSON数据解析为JavaScript对象。JSON.stringify()和JSON.parse()方法分别用来实现上述两项功能。这两个方法都有一些选项,通过它们可以改变过滤的方式,或者改变序列化的过程。

原生的JSON对象也得到了很多浏览器的支持,比如IE8+、Firefox3.5+、Safari4+、Opera10.5和Chrome.

/** * JSON */function cl(x){    console.log(x);}/** * 20.1 语法 *///20.1.1 简单值//JSON字符串与JavaScript字符串的最大区别是:// JSON字符串必须使用双引号//20.1.2 对象//JSON没有声明变量,对象的属性必须加双引号/*{    "name":"Jason",    "age":26,    "school":{        "name":"FuDan College",        "location":"ShangHai,China"    }}    *///20.1.3 数组/*[{    "name":"Jason",    "age":26,    "school":{"name":"FuDan College", "location":"ShangHai,China"}}, {    "name":"Alex",        "age":23,        "school":{"name":"FuDan College", "location":"ShangHai,China"}    }]    *//** * 20.2 解析与序列化 *///20.2.1 JSON对象//JSON对象有两个方法:stringify()和parse()var book={    title:"JavaScript book",    authors:["Jason Zhou"],    edition:3,    year:2013};//将JavaScript对象序列化为JSON字符串var jsonText1=JSON.stringify(book);cl(jsonText1);//=>{"title":"JavaScript book","authors":["Jason Zhou"],"edition":3,"year":2013}//将JSON字符串解析为原生JavaScript值var bookCopy=JSON.parse(jsonText1);cl(bookCopy);//=>Object {title: "JavaScript book", authors: Array[1], edition: 3, year: 2013}//20.2.2 序列化选项//20.2.2.1 过滤结果var jsonText2=JSON.stringify(book,["title","edition"]);cl(jsonText2);//=>{"title":"JavaScript book","edition":3}var jsonText3=JSON.stringify(book,function(key,value){    switch (key){        case "authors":            return value.join(",");        case "year":            return 5000;        case "edition":            return undefined;        default :            return value;    }});cl(jsonText3);//=>{"title":"JavaScript book","authors":"Jason Zhou","year":5000}//20.2.2.2 字符串缩进var jsonText4=JSON.stringify(book,null,4);cl(jsonText4);//=> /* {    "title": "JavaScript book",    "authors": [        "Jason Zhou"    ],    "edition": 3,    "year": 2013 }*/var jsonText5=JSON.stringify(book,null,"--");cl(jsonText5);//=>/* { --"title": "JavaScript book", --"authors": [ ----"Jason Zhou" --], --"edition": 3, --"year": 2013 } *///20.2.2.3 toJSON()方法//可以为任何对象添加toJSON()方法var newBook={    title:"JavaScript book",    authors:["Jason Zhou"],    edition:3,    year:2013,    toJSON:function(){        return this.title;    }};var jsonText6=JSON.stringify(newBook);cl(jsonText6);//=>"JavaScript book"//另外要注意序列化对象的执行顺序:toJSON->过滤器->序列化->格式化//20.2.3 解析选项var newBook2={    title:"JavaScript book",    authors:["Jason Zhou"],    edition:3,    year:2013,    releaseDate:new Date(2013,11,22)};var jsonText7=JSON.stringify(newBook2);var newBook2Copy=JSON.parse(jsonText7,function(key,value){    if(key=="releaseDate"){        return new Date(value);    }else{        return value;    }});cl(newBook2Copy.releaseDate.getFullYear()); //=>2013



0 0
原创粉丝点击