一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

js解析json对象详细说明

时间:2010-09-17 编辑:简简单单 来源:一聚教程网

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表达式进行运算,并返回值,用以获得一个对象,到这里,我想你一定会和我一样,对json格式的创造者的思维佩服不已吧。
 
本来说讲串行化的,“不小心”谈到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的parser。

对于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); 

热门栏目