JS是无法直接接收和使用JSON的数据,会出现undefined,所以要解析才能使用。
方式一
1
2
3
4
5
6
7
8
9
10
11
var str = '{"rows":[{"ID":0,"登录账号":"admin","登录时间":"2018-04-05"}]}';
var obj = eval("(" + str + ")");
console.log(obj);
var rows = obj["rows"];
for(var i = 0; i < rows.length; i++){
var ri = rows[i];
for(var k in ri){
console.log(k + ": " + ri[k]);
}
}
方式二
1
2
3
var data = '{"rows":[{"ID":0,"登录账号":"admin","登录时间":"2018-04-05"}]}';
var obj = JSON.parse(data);
console.log(obj);
JSON.parse()和eval()的区别
JSON.parse()
解析JSON格式的数据会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()
则可以解析任何字符串,eval()
是不安全的。比如下面的字符串:
1
2
3
var str = 'alert(1000.toString())';
eval(str);
JSON.parse(str);
用eval()
可以解析,并且会弹出对话框,而用JSON.parse()
则解析不了。如果恶意用户在JSON字符串中注入了向页面插入木马链接的脚本,用eval()
是可以操作的,而用JSON.parse()
则不必担心这个问题。
注意:某些旧版浏览器不支持JSON.parse()
,可以可以使用第三方库来支持https://github.com/douglascrockford/JSON-js/blob/master/json2.js。