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){
//
});