JavaScript的Eval与JSON.parse的区别

JavaScript的Eval与JSON.parse的区别

json的定义以及用法:

  JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据不需要任何特殊的API或工具包,而且效率非常高。

基本式:varjsonData='{"data1":"Hello,","data2":"world!"}'

很多json数据存入数组

{"name":"LiLei","age":19,"sex":"male"},{"name":"HanMei","age":18,"sex":"famale"}]

总体而言,json是相对比较容易的理解和使用的,但同时存在很多的陷阱,如果不注意的话很容易掉进去。

json与eval对比:

  json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?

JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

例如下面代码:

function EvalTest() {

    var content = "console.log('javascript')";
    eval(content);

}

function JSONTest() {
var content ="console.log('jvascript')";
JSON.parse(content);

}

它们的执行结果为:

  用eval可以解析,并且会在控制台中输入出需要打印的字符串,而用JSON.parse()则解析不了。eval在解析字符串时,会执行该字符串中的代码, 其实console.log并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

原文地址:https://www.cnblogs.com/wangjunqiao/p/5718466.html