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 } ]

 

posted @ 2017-07-12 10:22  gq_orange  阅读(336)  评论(0编辑  收藏  举报