zoukankan      html  css  js  c++  java
  • JS中JSON.parse和eval的异同

    1、相同点

    JSON.parse和eval函数都可将一段json字符串转换为json对象,如:

    var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":"male"}]}';
    var res1 = eval('(' + json + ')');
    var res2 = JSON.parse(json);
    console.log(res1.intro[0].name); // lucy
    console.log(res2.intro[1].sex); // male

    2、不同点

    JSON.parse将数据转换为 JS 对象时,会检测数据是否是标准的json格式,只解析属性名是双引号包裹的字符串对象,

    并会忽略换行和空格,并能捕捉JSON中的语法错误,而eval函数可解析包含js语句的json字符串。JSON.parse的安全性更高。

    var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":alert("unkown")}]}';
    var res1 = eval('(' + json + ')');
    console.log(res1.intro[0].name); // lucy

    当json字符串中含有js代码时,eval函数可执行其中的js代码,安全性低。

    var json = '{"intro":[{"name":"lucy", "sex":"male"},{"name":"polly","sex":alert("unkown")}]}';
    var res2 = JSON.parse(json); // 报错 VM134:1 Uncaught SyntaxError: Unexpected token a in JSON at position 62 at JSON.parse (<anonymous>)
    console.log(res2.intro[1].sex); 

    当json字符串中含有js代码时,JSON.parse报错,安全性高。

  • 相关阅读:
    OCP-1Z0-053-V12.02-655题
    OCP-1Z0-053-V12.02-656题
    OCP-1Z0-053-V12.02-639题
    EXCEL文件打开缓慢的问题解决
    IOCP底层,支持超过15000个连接
    OCP-1Z0-053-V12.02-340题
    OCP-1Z0-053-V12.02-338题
    OCP-1Z0-053-V12.02-336题
    OCP-1Z0-053-V12.02-334题
    OCP-1Z0-053-V12.02-333题
  • 原文地址:https://www.cnblogs.com/splendid/p/10373152.html
Copyright © 2011-2022 走看看