JSON是什么?
定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,同样也是一种常用的数据交换格式,与XML类似。它采用键值对的方式来组织。
格式
JSON数据的书写格式是:名称/值对 如:{name:value,...}
逗号相隔的为同级元素,还可嵌套包含多层。
如下:
{"list1":[{"name":"A","sex":"female"},{"name":"B","sex":"female"},...],"list2":[{"name":"X","sex":"male"},{"name":"Y","sex":"male"},...],...}
两种结构
从上面的代码就可以看出 list1为下面{"name":"A","sex":"female"},{"name":"B","sex":"female"},...的父层(list2同理)所以说,json既可以表达一个简单的key/value,也可以表达一个复杂的Map或List。
简单说,json就是由javascript中的对象和数组组合而成,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
值
1.数字(整数或浮点数)
2.字符串(双引号中)
3.逻辑值(true 或 false)
4.数组(在方括号中)
5.对象(在花括号中)
6.null
优点
1.易于人们阅读和编写,同时也易于机器解析和生成;
2.是独立于语言的,也就是说不管什么语言,都可以解析json,只需按json规则来就好;
3.json相对于XML来说,长度小,可大大减小带宽(网络传输中);
4.json读写速度比XML快。
JSON数据的解析
对于json的解析有两种方式:eval() 和 JSON.parse()
var jsonobj = eval('('+jsondata+')');
var jsonobj = JSON.parse(jsondata);
一般,在代码中使用eval()是很危险的!特别是用其执行第三方的JSON数据(包含恶意代码)时,尽可能使用JSON.parse()解析,该方法还可以捕捉JSON中的语法错误。
例如:
var jsondata = {
"staff":[
{"name":"A","age":alert(123)},
{"name":"B","age":30},
{"name":"C","age":35}
]
}
var jsonobj = eval('('+jsondata+')'); //会执行alert(123)
alert(jsonobj.staff[0].name);//再弹出"A"
eval()并不会判断js中的字符串是否合法,而且还会执行其中的js代码。所以说无论何时在js中使用eval()都危险。
var jsondata = {
"staff":[
{"name":"A","age":alert(123)},
{"name":"B","age":30},
{"name":"C","age":35}
]
}
var jsonobj = JSON.parse(jsondata); //会在控制台抛出错误--->字符串不合法(语法错误)
alert(jsonobj.staff[0].name);//不执行
实际中使用JSON.parse()来解析json数据很适合。