10. JSON
1 ///【JSON是一种数据格式,不是JS 独有的】 2 ///【JSON语法】 3 /* 4 1.数据书写格式:"name":value,JSON要求给属性名加上【双引号】,JSON不能用单引号 5 2.JSON值可以是:数字(整数、浮点数),字符串,布尔值(true false),数组,对象,null,注意没有undefined 6 3.数据由逗号分隔 7 4.大括号保存对象 8 5.中括号保存数组 9 */ 10 { 11 "bool":false, 12 "str":"string", 13 "num":12.3, 14 "null":null, 15 "arr":[1,"b",true], 16 "obj":{ //数组、对象可以任意嵌套 17 "a1":[1,2,3], 18 "a2":false 19 } 20 } 21 22 23 ///【JSON对象】 24 //访问对象 25 alert(Jobj.name);//通过点 26 alert(Jobj["name"]);//通过[],同时这两种方法也可以修改 27 28 //循环对象 29 for(x in Jobj){ 30 console.log(x);//注意循环出的是JSON的属性名 31 } 32 for(x in Jobj){ 33 console.log(Jobj[x]);//通过索引来访问属性值,循环中不能通过 . 来获取属性值 34 } 35 36 //删除对象属性 37 delete Jobj.name 38 delete Jobj["name"] 39 40 //JSON对象与JSON字符串 41 var str = '{"name":"bin","age":20}'; 42 var obj = {"name":"bin","age":20}; 43 44 45 ///【解析与序列化】 46 //【JSON.parse()】 47 //JSON通常用于与服务端交换数据,接收到的服务端数据一般是字符串,可以使用JSON.parse()方法将其转换为JS对象 48 JSON.parse(text[,reviver]);//text是JSON字符串,reviver可选,为对象的每个成员调用此函数function(key,value){...return} 49 50 //【JSON.stringify()】 51 //向服务器发送数据时一般是字符串,用JSON.stringify()将JSON对象转换为字符串 52 JSON.stringify(value,[,replacer[,space]]);//value是JSON对象,replacer function(key,value){...return} 53 54 //【序列化选项】 55 //JSON.stringify()还可以接收另外两个参数,第一个参数是过滤器,可以是一个数组,也可以是一个函数;第二个参数是缩进选项。 56 //过滤结果 57 var book = { 58 "title":"book1", 59 year:2012, 60 edition:3 61 } 62 var jsonText = JSON.stringify(book,["title"]) //只保留数组内给定的属性 63 alert(jsonText)//{"title":"book1"} 64 65 //函数形式 66 //该函数接收两个参数,分别是键和值,然后根据键值判断,如果返回值为 undefined,则响应的属性会被删除 67 var jsonText = JSON.stringify(book,function(key,value){ 68 switch(key){ 69 case "title": 70 return value; 71 case "year": 72 return value+5; 73 default: //必须加这个,必须返回value 74 return value; 75 } 76 }) 77 78 79 //【字符串缩进】 80 //增加可读性 81 var jsonText = JSON.stringify(book,null,4)//缩进四个空格