亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

JSON語法

JSON和XML類型,都是一種結(jié)構(gòu)化的數(shù)據(jù)表示方式。所以,JSON并不是JAVAScript獨(dú)有的數(shù)據(jù)格式,其他很多語言都可以對JSON進(jìn)行解析和序列化。

JSON的語法可以表示三種類型的值:

①簡單值:可以在JSON中表示字符串、數(shù)值、布爾值和null。但JSON不支持JavaScript中的特殊值undefined。

②對象:顧名思義。

③數(shù)組:顧名思義。

1.簡單值

"Lee"這兩個量就是JSON的表示方法,一個是JSON數(shù)值,一個是JSON字符串。布爾值和null也是有效的形式。但實(shí)際運(yùn)用中要結(jié)合對象或數(shù)組。

2.對象

JavaScript對象字面量表示法:

var box = { 
 name : 'Lee', 
 age : 100 
}; 

而JSON中的對象表示法需要加上雙引號,并且不存在賦值運(yùn)算和分號:

{ 
 "name" : "Lee", //使用雙引號,否則轉(zhuǎn)換會出錯 
 "age" : 100 
} 

3.數(shù)組

JavaScript數(shù)組字面量表示法:

var box = [100, 'Lee', true];

而JSON中的數(shù)組表示法同樣沒有變量賦值和分號:

[100, "Lee", true]

一般比較常用的一種復(fù)雜形式是數(shù)組結(jié)合對象的形式:

[ 
 { 
 "title" : "a", 
 "num" : 1 
 }, 
 { 
 "title" : "b", 
 "num" : 2 
 }, 
 { 
 "title" : "c", 
 "num" : 3 
 } 
 ]

PS:一般情況下,我們可以把JSON結(jié)構(gòu)數(shù)據(jù)保存到一個文本文件里,然后通過XMLHttpRequest對象去加載它,得到這串結(jié)構(gòu)數(shù)據(jù)字符串(XMLHttpRequest對象將在Aajx章節(jié)中詳細(xì)探討)。所以,我們可以模擬這種過程。

模擬加載JSON文本文件的數(shù)據(jù),并且賦值給變量。

	var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; 

PS;上面這短代碼模擬了var box = load('demo.json');賦值過程。因?yàn)橥ㄟ^load加載的文本文件,不管內(nèi)容是什么,都必須是字符串。所以兩邊要加上雙引號。

其實(shí)JSON就是比普通數(shù)組多了兩邊的雙引號,普通數(shù)組如下:

	var box = [{name : 'a', age : 1},{name : 'b', age : 2}]; 

4.解析和序列化

如果是載入的JSON文件,我們需要對其進(jìn)行使用,那么就必須對JSON字符串解析成原生的JavaScript值。當(dāng)然,如果是原生的JavaScript對象或數(shù)組,也可以轉(zhuǎn)換成JSON字符串。

對于講JSON字符串解析為JavaScript原生值,早期采用的是eval()函數(shù)。但這種方法既不安全,可能會執(zhí)行一些惡意代碼。

varbox = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; 
alert(box); //JSON字符串 
varjson = eval(box); //使用eval()函數(shù)解析 
alert(json); //得到JavaScript原生值 

ECMAScript5對解析JSON的行為進(jìn)行規(guī)范,定義了全局對象JSON。支持這個對象的瀏覽器有IE8+、Firefox3.5+、Safari4+、Chrome和Opera10.5+。不支持的瀏覽器也可以通過一個開源庫json.js來模擬執(zhí)行。JSON對象提供了兩個方法,一個是將原生JavaScript值轉(zhuǎn)換為JSON字符串:stringify();另一個是將JSON字符串轉(zhuǎn)換為JavaScript原生值:parse()。

var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; //特別注意,鍵要用雙引號 
alert(box); 
var json = JSON.parse(box); //不是雙引號,會報(bào)錯 
alert(json); 
var box = [{name : 'a', age : 1},{name : 'b',age : 2}]; //JavaScript原生值 
var json = JSON.stringify(box); //轉(zhuǎn)換成JSON字符串 
alert(json); //自動雙引號 

在序列化JSON的過程中,stringify()方法還提供了第二個參數(shù)。第一個參數(shù)可以是一個數(shù)組,也可以是一個函數(shù),用于過濾結(jié)果。第二個參數(shù)則表示是否在JSON字符串中保留縮進(jìn)。

varbox = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; 
var json = JSON.stringify(box, ['name', 'age'],4); 
alert(json); 

PS:如果不需要保留縮進(jìn),則不填即可;如果不需要過濾結(jié)果,但又要保留縮進(jìn),則講過濾結(jié)果的參數(shù)設(shè)置為null。如果采用函數(shù),可以進(jìn)行復(fù)雜的過濾。

varbox = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; 
var json = JSON.stringify(box, function (key, value) { 
 switch (key) { 
 case 'name' : 
 return'Mr.' + value; 
 case 'age' : 
 returnvalue + '歲'; 
 default: 
 returnvalue; 
 } 
}, 4); 
alert(json); 

PS:保留縮進(jìn)除了是普通的數(shù)字,也可以是字符。

還有一種方法可以自定義過濾一些數(shù)據(jù),使用toJSON()方法,可以將某一組對象里指定返回某個值。

varbox = [{name : 'a', age : 1, height : 177, toJSON : function () { 
 return this.name; 
}},{name : 'b',age : 2, height : 188, toJSON : function () { 
 return this.name; 
}}]; 
var json = JSON.stringify(box); 
alert(json); 

PS:由此可見序列化也有執(zhí)行順序,首先先執(zhí)行toJSON()方法;如果應(yīng)用了第二個過濾參數(shù),則執(zhí)行這個方法;然后執(zhí)行序列化過程,比如將鍵值對組成合法的JSON字符串,比如加上雙引號。如果提供了縮進(jìn),再執(zhí)行縮進(jìn)操作。

解析JSON字符串方法parse()也可以接受第二個參數(shù),這樣可以在還原出JavaScript值的時候替換成自己想要的值。

varbox = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; 
var json = JSON.parse(box, function (key, value) { 
 if (key == 'name') { 
 return'Mr.' + value; 
 } else { 
 returnvalue; 
 } 
}); 
alert(json[0].name);

總結(jié)

通過本篇文章,你可以學(xué)習(xí)到以下知識點(diǎn):

1.JSON簡單值;

2.對象;

3.數(shù)組;

IT技術(shù)研習(xí)社,專注互聯(lián)網(wǎng)技術(shù)研究與分享,喜歡的朋友可以點(diǎn)擊【關(guān)注】;把經(jīng)驗(yàn)傳遞給有夢想的人;

互聯(lián)網(wǎng)前端開發(fā)技術(shù)之JavaScript JSON語法詳解

 

分享到:
標(biāo)簽:JavaScript
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定