Home JS解析JSON
Post
Cancel

JS解析JSON

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

This post is licensed under CC BY 4.0 by the author.