parse 和 eval 的区别

版权声明: https://blog.csdn.net/qq_28256783/article/details/82217492

一般在js中使用parse将String转Json,相对来说比较安全

var A = "{  a: 1 , b : 'hello' }";
var B = "{  'a': 1 , 'b' : 'hello' }";
var C = "{'a':1,'b':'hello'}";
var D = '{"a":1,"b":"hello"}';
var E = '{ "a" : 1 , "b" : "hello" }';
var F = '{ "a" : 1 ,\n  "b" : "hello" }';
var G = '{ "a" : 1 , "b" : window.location.href="https://www.baidu.com" }';
parse:
    对象和数组:属性名称必须用双引号包裹;最后一个属性后面不能有逗号。
    数值:前导0不能使用(在 JSON.stringify 中将会被忽略,在 JSON.parse 会抛出错误);小数点后面至少有一个数字。
    字符串:只有有限的字符能够被转义;不允许某些控制字符;但允许使用Unicode 行分隔符 (U+2028) 和段落分隔符 (U+2029) ;字符串必须用双引号括起来。

例:JSON.parse(A);——>D、E、F可以
var data={
    "student" : [
        {"name":"孔明","age":17},
        {"name":"刘备","age":17},
        {"name":"曹操","age":17}
    ]

eval:
    var jsonText=JSON.stringify(data);//将Json转字符串
    eval('('+jsonText+')');
    
    以上全可以转化。
    eval()不会检查JSON的格式,如果字符串中,存在js的代码会一并执行
    

猜你喜欢

转载自blog.csdn.net/qq_28256783/article/details/82217492