eval、json.parse()的介绍和使用注意点

eval和json.parse的使用

eval:来源于官网

定义和用法

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法:  eval(string)

参数 描述

string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

返回值

通过计算 string 得到的值(如果有的话)。

说明

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

eg:

<script type="text/javascript">

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10

document.write(eval(x+17))

</script>

输出:

200

4

27

处理json数据

1、eval

根据不同的json格式,一般有两种方式

json为json数据

转化json数据,使用方法统一

var dataObj = eval("("+json+")");

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

将json数据转换为json对象

(1)含有“节点”的json数据

var json = {

  root:

  [

  {name:‘1‘,value:‘0‘},

  {name:‘2‘,value:‘1‘},

{name:‘3‘,value:‘2‘},

  ]

  }";

如果获取对应的name和value的值,可以使用

$(dataObj.root).each(function(i,item){

var str = "name:"+item.name+",value:"+item.value;

})

(2)不含有“节点”的json数据

var json = {"name":"1","name":"2","name":"3"}

使用$(dataObj).each(function(i,item){

var str = "name:"+item.name+",value:"+item.value;

})获取对应的数据

注意:eval使用比较危险,能不用最好就不要用,以免徒增不必要的麻烦

2、JSON.parse(String,function())

Strign:必选参数,为json数据

function():可选参数,如果不为空,则为对象的每个成员调用词函数

返回结果为对象或者数组,此方法与eval能达到相同的效果,简单易于使用,但此方法不支持IE6、IE7标准模式,但是可以自己下载json2.js来解决这一问题

网址:http://www.JSON.org/json2.js

使用方法:

var dataObj = JSON.parse(json);

for(var data in dataObj){

//获取对应数据的值

}

时间: 2024-08-27 18:37:03

eval、json.parse()的介绍和使用注意点的相关文章

JSON.stringify()、eval(),JSON.parse()各自的区别于作用

JSON.stringify(value [, replacer] [, space]) value 必需. 要转换的 JavaScript 值(通常为对象或数组). replacer 可选. 用于转换结果的函数或数组. 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值. 使用返回值而不是原始值. 如果此函数返回 undefined,则排除成员. 根对象的键是一个空字符串:"". 如果 replacer 是一个数组,则仅转换该数组中

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

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

浅谈JSON.parse()、JSON.stringify()和eval()的作用

相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: “JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使JSON成为理想的数据交换语言,作用是易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).” 今天在这里笔者想简单谈谈jquery里面的JSON.parse()和JSON.stringify()函数,顺便

JSON.parse和eval的区别

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

JSON eval()和parse()方法以及stringfy()方法 作用

(1)把 JSON 文本转换为 JavaScript 对象 由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象. 语法:var obj = eval ("(" + jsonTxt + ")");  其中jsonTxt是JSON文本. 实例如下: var jsonTxt = '{"name":"leinov","

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

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

JSON.parse和eval的区别(转)

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

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的序列化和反序列化eval()和parse()方法以及stringfy()方法

1.json解析的方法有两种:eval()和parse()方法 eval() 较危险,不光解析了字符串,还解析了js方法,无论何时用eval()都是非常危险的.-----不建议使用JSON.parse()较好,会解析出错误. 例子[加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行将json数据转换为json对象.] var jsondata='{"staff":[{&