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数据很合适。