JSON.parse和eval的区别

JSON


JSON是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSONjavascript原生数据格式,这意味着在javascript中处理JSON数据时效率非常高
基本格式:

1
var data={"data1":"Hello,","data2":"world!"}

调用方法:

1
console.log(data.data1 + data.data2)

json数据存入数组

1
var data=[{"name":"LiLei","age":19,"sex":"male"},{"name":"HanMei","age":18,"sex":"famale"}]

调用方法:

1
console.log(data[0].name + " is " + data[0].sex)

总体而言,json是相对比较容易理解和使用的,但同时存在很多的陷阱,如果不注意的话很容易掉进去

JSON的的解析方法


json的解析方法共有两种:eval()JSON.parse(),使用方法如下:

1
2
3
var data = '{"data1":"Hello,", "data2":"world!"}';
var evalD=eval('('+data+')');
var parseD=JSON.parse(data);

这样就把data这个json格式的字符串转换成了json对象。
二者的区别如下:

1
2
3
4
var value = 1;
var txt = '{"data1":"hello","data2":++value}';
var data1 = eval('('+txt+')');
console.log(value);

这时value值为2

1
2
var data2=JSON.parse(txt);
console.log(data2);//报错

可以从控制输出台的结果看到JSON.parseeval的区别,第一个eval()顺利执行,第二个报错了
从上例就可以明显地看出,eval在解析字符串时,会执行该字符串中的代码,如上例中,由于用eval解析一个json字符串而造成原先的value的值改变
关于JSON.parse()eval需要注意的是:在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果

如果您觉得我的文章对您有用,请随意打赏。

您的支持将鼓励我继续创作!

¥ 打赏支持

文章导航

目录

×
  1. 1. JSON
  2. 2. JSON的的解析方法