一、JSON数据格式
名称/值对
二、JSON值对数据类型
数字 字符串 逻辑值 数组(在方括号中) 对象 (在花括号中) null
eg:
{
"staff":[
{"name":"小明","age":"18"},
{"name":"小红","age":"15"},
{"name":"小黄","age":"20"}
]
}
三、JSON解析
eval和Json.parse
eval在代码中使用很危险,特别是用它执行第三方的Json数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身,该方法可以捕获JSON中的语法错误
eg1:
(1) var jsondata='{"staff":[{"name":"小明","age":"18"},{"name":"小红","age":"15"},{"name":"小黄","age":"20"}]}';
var jsonbj=eval('('+jsondata+')');
alert(jsonbj.staff[0].name)
(2) var jsondata='{"staff":[{"name":"小明","age":"18"},{"name":"小红","age":"15"},{"name":"小黄","age":"20"}]}';
var jsonbj=JSON.parse(jsondata);
alert(jsonbj.staff[0].name)
eg2:
(1) var jsondata='{"staff":[{"name":"小明","age":alert(123)},{"name":"小红","age":"15"},{"name":"小黄","age":"20"}]}';
var jsonbj=eval('('+jsondata+')');
alert(jsonbj.staff[0].name)
会先弹出123,再弹出小明
(2) var jsondata='{"staff":[{"name":"小明","age":"18"},{"name":"小红","age":"15"},{"name":"小黄","age":"20"}]}';
var jsonbj=JSON.parse(jsondata);
alert(jsonbj.staff[0].name)
会报错Uncaught SyntaxError: Unexpected identifier
四、JSON校验工具(https://jsoncompare.com/#!/simple/)