JSON格式本就發(fā)自于JavaScript中的對(duì)象和數(shù)組,所以js操作起來(lái)自然也是最為簡(jiǎn)單原始,接下來(lái)我們就來(lái)看一些常用的JavaScript中對(duì)JSON對(duì)象的基本操作示例
JSON對(duì)象
1、對(duì)象的屬性:
對(duì)象的屬性是有鍵值對(duì)組成的,其中key為一個(gè)字符串,value可以為任何的Javascript對(duì)象。
//使用[]設(shè)置和獲取對(duì)象的屬性
var obj = new Object();
obj["www.jb51.net"] = "http://www.jb51.net";
alert(obj["www.jb51.net"]);
2、變量既是屬性:
Javascript引擎在初始化時(shí)會(huì)構(gòu)建一個(gè)全局對(duì)象,所有的變量都是這個(gè)全局對(duì)象的屬性。為了引用這個(gè)全局對(duì)象,可以再頂級(jí)作用域中這樣獲取:
var global = this;
在Javascript中,任何獨(dú)立的函數(shù)或者變量都屬于這個(gè)對(duì)象的屬性,即:
function test(){}
相當(dāng)于:
window.test = function(){}
3、使用對(duì)象:
聲明對(duì)象的三種方式:
① 通過(guò)new操作符創(chuàng)建一個(gè)Object對(duì)象,然后動(dòng)態(tài)地添加屬性,從無(wú)到有構(gòu)造一個(gè)對(duì)象
② 定義對(duì)象的類圓形,然后使用new操作符來(lái)批量構(gòu)造新的對(duì)象
//創(chuàng)建一個(gè)對(duì)象
function User(username, password){
this.username = username;
this.password = password;
this.getUsername = function(){
return this.username;
}
this.getPassword = function(){
return this.password;
}
}
var arthinking = new User("Jason", "123");
alert(arthinking.getUsername());
alert(arthinking.getPassword());
③ 使用JSON構(gòu)造對(duì)象
JSON即Javascript對(duì)象表示方法(Javascript Object Notation),也就是通過(guò)字面量來(lái)表示一個(gè)對(duì)象:
//JSON形式創(chuàng)建一個(gè)對(duì)象
var arthinking = {
username : "Jason",
password : "123",
favorite : {
sports : "football",
music : "Guitar"
}
}
alert(arthinking.username);
alert(arthinking.favorite.sports);
解析由服務(wù)器返回的JSON格式數(shù)據(jù)
單個(gè)JSON對(duì)象:
[{a:'1',b'2'},{a:'3',b'4'}]
多個(gè)JSON對(duì)象:
{
"usergroups":[{a:'001',b:'arthinking'},a:'002',b:'Jason'}],
"groups":[{c:'001',d:'IT宅'}]
}
可以根據(jù)這種格式先從后臺(tái)封裝好需要傳遞的數(shù)據(jù),前臺(tái)獲取到后可以這樣解析獲取數(shù)據(jù):
//假設(shè)response.responseText為返回的JSON字符串
//可以使用eval()函數(shù)把JSON字符串轉(zhuǎn)換成Javascript語(yǔ)句
//再通過(guò)”.”導(dǎo)航獲取具體屬性,length屬性為對(duì)象的長(zhǎng)度
var obj = eval( "(" + response.responseText + ")" );
for(var i = 0; i<obj.usergroups.length; i++){
var groupid = obj.usergroups[i].a;
var usergroup=obj.groups;
for(var j=0; j<usergroup.length; j++){
if(usergroup[j].c == groupid){
alert(groupid);
}
}
}