JSON.parse()、eval()、JSON.stringi

作者: 科技树 | 来源:发表于2017-09-16 16:45 被阅读0次

    一:JSON数据的两种解析方法 JSON.parse() 、eval ()方法

    1 :JSON.parse() : 用于将一个 JSON 字符串转换为 JavaScript 对象。

    var str = '{"name":"zhangsan","age":18,"gender":"man"}';
    ​
     JSON.parse(str);
    

    结果:

    注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。(有的浏览器不支持 JSON.parse() 如:IE 6 、IE 7 就不支持)

    2:eval(): 也是用于将一个 JSON 字符串转换为 JavaScript 对象

    var str = '{"name":"zhangsan","age":18,"gender":"man"}';
    
    eval('('+str+')'); // 格式: eval( '(' + string + ')' ); 
    

    结果:

    为什么eval()解析的时候要加括号?

    那是因为eval()相当于一个执行环境,当你不加括号的时候,str 会被认为是一条复合语句。运行的时候就会逐个字符的解析。
    但是加上括号的时候,str 就当做一个表达式去运算。从括号开始就被当做了对象进行识别。

    JSON.parse() 和 eval()的区别

    var num = 1;
    var jsonstr = '{"name":"zhangsan","age":++num}';
    var jsondata1 = eval('('+jsonstr+')');
    ​
    
    console.log(jsondata1);
    
    ​
    console.log(num);//这时num值为2
    ​
    var jasondata2=JSON.parse(jsonstr);
    console.log(jsondata2);//报错
    

    结果:

    从上例就可以明显地看出, eval在解析字符串时,会执行该字符串中的代码。 
    由于用eval解析一个json字符串而造成原先的num的值改变(这样的后果是相当危险的)。
    

    二:JSON.stringify() :用于将 JavaScript 值转换为 JSON 字符串

    var str = {"name":"zhangsan","age":18,"gender":"man"};
    
    JSON.stringify(str); 
    

    结果为:

    三:jQuery.parseJSON() 将格式完好的JSON字符串转为与之对应的JavaScript对象

    var str = '{"name":"zhangsan","age":18,"gender":"man"}';
    
    jQuery.parseJSON(str)
    

    结果:


    如果这篇文章对您有用,请多多支持!

    相关文章

      网友评论

        本文标题:JSON.parse()、eval()、JSON.stringi

        本文链接:https://www.haomeiwen.com/subject/hvxusxtx.html