• JS 将json字符串 转为 json对象 中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报错,安全性高。

  • 相关阅读:
    2.2 范式和反范式
    1.7 关系数据库设计理论
    2.1 选择优化的数据类型
    1.6 间隙锁(next-key locking)
    1.5 MySQL的存储引擎
    1.4 多版本并发控制
    1.3 事物和并发一致性问题
    1.2 并发控制
    1.1 MySQL逻辑架构
    php自定义函数及内部函数----数组处理函数
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/14930788.html
Copyright © 2020-2023  润新知