json解析与序列化
JSON是什么
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于javascript的一个子集。数据格式简单, 易于读写, 占用带宽小。是前后台数据交互最常见的一种数据格式。
存储和交换文本信息的语法。
数据格式:简单值 、 对象 、数组
JSON对象语法特点:没有变量声明,没有末尾的分号、属性名加双引号
JavaScript字符串与JSON字符串的最大区别在于:JSON字符串必须使用双引号(单引号会导致语法错误)。
解析:把JSON字符串数据结构解析为原生JavaScript对象值。 常用方法:eval()方法 eval('('+ str +')') 、 解析JSON.parse()
序列化:把JavaScript对象值序列化为JSON字符串 常用方法:JSON.stringify()
1 //javascript对象 2 var book = { 3 title: "JavaScript", 4 authors: [ 5 "Mr.Guo", 6 "Mrs.An", 7 ], 8 edition: 1, 9 year: 2015 10 }; 11 //序列化 JSON.stringify() 12 //js对象转化为JSON字符串 13 var jsonText = JSON.stringify(book); 14 var jsonText1 = JSON.stringify(book, ["title", "year"],4); //过滤器 + 缩进 15 console.log(jsonText); //{"title":"JavaScript","authors":["Mr.Guo","Mrs.An"],"edition":1,"year":2015} 16 console.log(jsonText1); 17 // { 18 // "title": "JavaScript", 19 // "year": 2015 20 // } 21 22 23 //javsccrpt数组,数组可以包含对象 24 var array = [1,2,3,4,{ 25 title: "JavaScript", 26 authors: [ 27 "Mr.Guo", 28 "Mrs.An", 29 ], 30 edition: 1, 31 year: 2015 32 }]; 33 //序列化,js数组转化为JSON字符串 34 var jsonArray = JSON.stringify(array); 35 console.log(jsonArray); 36 //[1,2,3,4,{"title":"JavaScript","authors":["Mr.Guo","Mrs.An"],"edition":1,"year":2015}] 37 38 39 //解析JSON.parse() 40 //JSON字符串转化为javascript对象 41 var jsObj = JSON.parse(jsonArray); 42 var jsObj1 = JSON.parse(jsonText); 43 console.log(jsObj); 44 // [ 1, 45 // 2, 46 // 3, 47 // 4, 48 // { title: 'JavaScript', 49 // authors: [ 'Mr.Guo', 'Mrs.An' ], 50 // edition: 1, 51 // year: 2015 } ] 52 console.log(jsObj1); 53 // { title: 'JavaScript', 54 // authors: [ 'Mr.Guo', 'Mrs.An' ], 55 // edition: 1, 56 // year: 2015 } 57
58 //JSON字符串转化为javascript对象 59 //eval()方法 eval('('+ str +')') 60 var jsObj2 = eval('('+ jsonArray +')'); 61 console.log(jsObj2); 62 // [ 1, 63 // 2, 64 // 3, 65 // 4, 66 // { title: 'JavaScript', 67 // authors: [ 'Mr.Guo', 'Mrs.An' ], 68 // edition: 1, 69 // year: 2015 } ]