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()则不必担心这个问题。