码迷,mamicode.com
首页 > Web开发 > 详细

JSON.parse(jsonStr)和eval('('+jsonStr+')')

时间:2017-05-22 09:59:53      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:解析   字体   json格式   parse   var   eval   执行   obj   name   

我们先初始化一个json格式的对象:

  var jsonDate = ‘{ "name":"周星驰","age":23 }‘

  var jsonObj = eval( ‘(‘ + jsonDate + ‘)‘ );  // eval();方法

  var jsonObj = JSON.parse( jsonDate );  // JSON.parse(); 方法

然后在控制台调用:

  console.log( jsonObj.name );  // 两种方法都可以正确输入 周星驰

那么问题来了 两种方法有什么区别呢?(下面我们稍微把代码改动一下,蓝色字体为修改部分)

  var jsonDate = ‘{ "name":alert("hello"),"age":23 }‘

  var jsonObj = eval( ‘(‘ + jsonDate + ‘)‘ );  // eval();方法

  console.log( jsonObj.age );  //会先执行“alert”输出“hello”  然后才输出 23

换“JSON.parse();”方法:

  var jsonDate = ‘{ "name":alert("hello"),"age":23 }‘

  var jsonObj = JSON.parse( jsonDate );  // JSON.parse(); 方法

  cosole.log( jsonobj.age )  // 报错  这个错误告诉我们这个字符串是不合法的

小结:“eval();”方法解析的时候不会去判断字符串是否合法,而且json对象中的js方法也会被执行,这是非常危险的;而“JSON.parse();”方法的优点就不用多说了,推荐此方法。

JSON.parse(jsonStr)和eval('('+jsonStr+')')

标签:解析   字体   json格式   parse   var   eval   执行   obj   name   

原文地址:http://www.cnblogs.com/DaphneOdera/p/6888101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!