js解析json对象详细说明

来源:互联网 发布:淘宝网警服 编辑:程序博客网 时间:2024/05/05 06:11

转载:http://www.111cn.net/wy/js-ajax/35176.htm


js的data转换为json对象方法
function callback(str) { 

var json = eval('(' + str + ')'); 

}
...
 现在都不建议用eval了,解析json,可以用这个
function jsondecode(data) { 

return (new function("return " + data))();

 }


json分析实例
json和xml进行比较,二者都是将对象扁平化(稍后我们解释这个“扁平化”)的一种手段,xml的特点是结构严谨,而json的特点则是简单易读、容易使用程序进行分析,因为它能够很简单的将一个对象转换为一个字符流的形式,例如如下代码:

{"type":"human","name":"hanguofeng","age":22}

则是一个json表达式,他保存了一个对象,我们如何将它恢复为对象呢?很简单,如下:
 
var animal_str = '{"type":"human","name":"hanguofeng","age":22}'; 
 
var animal2=eval('(' + animal_str + ')');

注意括号的使用, php教程传过来的值如果没有用括号包括,js就得处理.. 处理完成后,就可以访问像php一样访问数组.
 
alert(amimal2[1]['id'])   //这样.

我们通过网页特效的求值函数,将json表达式进行运算,并返回值,用以获得一个对象。 
 
php的串行化和json是非常像的,一个php的串行化表达式如下: 
 
a:3:{s:4:"type";s:5:"human";s:4:"name";s:10:"hanguofeng";s:3:"age";s:2:"20";}
 
他看起来结构和json有些类似,实际上,这个表达式是如下数组的串行化结果: 
 
$animal = 
array 

 
"type" => "human", 
"name" => "hanguofeng", 
"age" => "20" 
);


再看一个实例
var myjsonobject = {"bindings": [
        {"ircevent": "privmsg", "method": "newuri", "regex": "^http://.*"},
        {"ircevent": "privmsg", "method": "deleteuri", "regex": "^delete.*"},
        {"ircevent": "privmsg", "method": "randomuri", "regex": "^random.*"}
    ]
};myjsonobject.bindings[0].method    // "newuri"



把json字符串转化成json对象,可以使用eval()函数,eval()函数的速度很快,但是由于它能编译和解析任何js程序,所以它的安全性不高,如果要求安全性,可以使用json的parse。

对于eval()函数的使用方法,如下:
var myobject = eval('(' + myjsontext + ')');

对于json paser的使用,如下:
var myobject = json.parse(myjsontext, reviver);
其中reviver是可选的参数。

还可以使用json stringifier把json对象转化成json字符串,其使用方法如下:
var myjsontext = json.stringify(myobject, replacer);

其中replacer为可选的参数函数。使用它还可以有如下用法:
var name=document.getelementbyid('username');var json={name:name,pass:pass}
其中json中的字段都是变量.可以使用stringify把json转化成字符串,使用如下:

var jsonstring=json.stringify(json);