eval && JSON.parse

JSON(JavaScript Object Notation)一种轻量级的数据格式,采取完全独立于语言的文本格局,同时json是JavaScript原生格局,这意味着JavaScript在处理Json时不需要额外的api或者是对象包并且执行效果高;

1.Json的解析办法:

1.eval() 2.JSON.parse()

2.一个标准的Json:

var str = {"id":"smile","age":"21"};

3.eval():

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

语法:eval(string);

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
 
eg:
eval("x=10; y=20; document.write(x*y)");    //200;

document.write(eval("2+2"));           //4;

var x=10;
document.write(eval(x
+10));           //20;

处理Json数据:

 
转换Json数据,使用统一方法:
var evalJson=eval("("+ str +")");

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

讲Json数据转换为Json对象:

  • 有"节点"的Json数据:

var jsonText={root:[{"name":"aaa","value":"000"},{"name":"bbb","value":"111"}]};

如果想取得name及value所对应的值:

$(jsonText.root).each(function(i,b){
var str=" name: "+b.name+" ,value: "+b.value;
});

  • 不含有"节点"的Json数据:

var jsonText='{"name":"aaa","value":"bbb"}';

如果想取得name及value所对应的值:

$(str).each(function(i,b) {
   
    var str=" name: "+b.name+" ,value: "+b.value;
});

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

 

 4.JSON.parse(String,fn):

String:为必选参数,为必选数据;
fn:为可选参数,如果不为空,则为对象的每个成员都调用此函数;

返回对象为对象或数组;

 

此方法简单易用,能达到与eval相同的效果,

但不支持ie6,7标准模式;

 

但可以使用Json2.js来解决这一问题;

 

使用方法:
var str=JSON.parse(json);

$(str).each(function(i,b){
  //
});
原文地址:https://www.cnblogs.com/SmileCN/p/3006207.html