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

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

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

比如下面的字符串:

var str = ‘alert(1000.toString())‘; eval(str); JSON.parse(str);

用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

注意:某些低级的浏览器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载。

时间: 2024-07-28 18:36:46

JSON.parse()和eval()的区别的相关文章

JSON.parse与eval的区别

JSON.parse与eval和能将一个字符串解析成一个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 = '{

JSON.parse和eval的区别

JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据不需要任何特殊的API或工具包,而且效率非常高. 基本格式:varjsonData='{"data1":"Hello,","data2":"world!"}' 调用方法jsonData.data1

JSON.parse和eval的区别(转)

这几天刚好看到这里,记下来 JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据不需要任何特殊的API或工具包,而且效率非常高. 基本格式:varjsonData='{"data1":"Hello,","data2":"world!"}' 调用方法

javascript中JSON.parse()与eval()解析json的区别

varjsonData='{"data1":"Hello,","data2":"world!"}' 调用方法jsonData.data1,jsonData.data2 jsonData=[  {"name":"LiLei","age":19,"sex":"male"}, {"name":"HanMe

Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语言,作用是易于阅读和编写,同时也易于机器解析和生成(一般用于网络传输速率). 一:JSON.parse(); 作用:将json字符串转换成json对象 语法:JSON. parse(text[,reviver]). 参数: text:必选,一个有效的json字符串. reviver:可选. 返回值:

JSON.parse 与 eval() 对于解析json的问题

1.eval()与JSOn.parse的不同 eval() var c = 1; //全局变量 var jsonstr1 = '{"name":"a","company":"b","value":++c}'; var json1 = eval('(' + jsonstr1 + ')'); console.log(json1.value); c是全局变量为1,但是经过eval的解析,全局变量变成了2!(这样的

JSON.parse()与eval()

一.前言 和 XML 一样,JSON 也是基于纯文本的数据格式.由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象. 二.包含json对象的字符串 基本格式:var jsonData='{"data1":"Hello,","data2":"world!"

js中解析json时候的eval和$.parseJSON()的区别以及JSON.stringify()

1.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?      JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的 如: var str = 'alert(1000.toString())'; eval(str); JSON.parse(str);  用eval可以解析,并

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

我们将一个字符串解析成json对象时可以使用两种方法: 假设我们有一个json格式的字符串: '{ "student" : [ {"name":"鸣人","age":17}, {"name":"小樱","age":17}, {"name":"佐助","age":17} ] }' 然后我们需要把它解析成json