最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入掌握J(rèn)son

2021-05-11 14:31 作者:匯智知了堂  | 我要投稿

1. JSON 是什么?

  • JSON 指的是 JavaScript 對象表示法(JavaScript?Object?Notation)

  • JSON 是輕量級的文本數(shù)據(jù)交換格式

  • JSON 獨立于語言:JSON 使用 Javascript語法來描述數(shù)據(jù)對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。 目前非常多的動態(tài)(PHP,JSP,.NET)編程語言都支持JSON。

  • JSON 具有自我描述性,更易理解

2. JSON 的語法規(guī)則是怎樣的?

  • JSON 語法是 JavaScript 對象表示語法的子集。

    • 數(shù)據(jù)在名稱/值對中

    • 數(shù)據(jù)由逗號分隔

    • 大括號?{}?保存對象

    • 中括號?[]?保存數(shù)組,數(shù)組可以包含多個對象

{ ? ?

"name": "xdr630", ? ?

"favorite": "programming"

}

3. JSON 和 XML

JSON常被拿來與XML做比較,因為JSON 的誕生本來就多多少少要有取代XML的意思。相比 XML,JSON的優(yōu)勢如下:

  • 沒有結(jié)束標(biāo)簽,長度更短,讀寫更快

  • 能夠直接被JavaScript解釋器解析

  • 可以使用數(shù)組

兩者比較

  • JSON:

{ ? ?

"name":"兮動人", ? ?

"age":22, ? ?

"fruits":["apple","pear","grape"]

}


  • XML:

<root> ? ?

<name>兮動人</name> ? ?

<age>22</age> ? ?

<fruits>apple</fruits> ? ?

<fruits>pear</fruits> ? ?

<fruits>grape</fruits>

</root>


4. JSON的解析和生成(JSON 和 JS 對象互轉(zhuǎn))

  • 在JavaScript中,有兩個方法與此相關(guān):?JSON.parse和?JSON.stringify?。
    JSON 和 JS 對象互轉(zhuǎn)

  1. 要實現(xiàn)從JSON字符串轉(zhuǎn)換為JS對象,使用?JSON.parse()?方法:

<script> ? ?

var str = '{"name": "兮動人","age":22}'; ? ?

var obj = JSON.parse(str); ? ?

console.log(obj);

</script>

要實現(xiàn)從JS對象轉(zhuǎn)換為JSON字符串,使用?JSON.stringify()?方法:

<script> ? ?

var str = '{"name": "兮動人","age":22}'; ? ?

var obj = JSON.parse(str); ? ?

console.log(obj); ? ?

var jsonstr = JSON.stringify(obj); ? ?

console.log(jsonstr);

</script>

5、JSON格式規(guī)定

5.1、對象(0bject)

對象用大括號(“{}”)括起來,大括號里是一系列的“名稱/值對”,請看概念圖。

兩個并列的數(shù)據(jù)之間用逗號(“,”)隔開,注意兩點:

使用英文的逗號(“,”),不要用中文的逗號(“,”)

最后一個“名稱/值對“之后不要加逗號

5.2、數(shù)組(Array)

  • 數(shù)組表示一系列有序的值,用方括號(“[]”)包圍起來,并列的值之間用逗號分隔,請看概念圖。

例如,以下的數(shù)組是合法的:

[1,2,"three","four",true,false,null,[1,2],{"name":"兮動人"}]

5.3、名稱/值對(Name/Value)

  • 名稱(Name)是一個字符串,要用雙引號括起來,不能用單引號也不能沒有引號,這一點與JavaScript不同。

  • 值的類型只有七種:字符串(string)、數(shù)值(number)、對象(object)、數(shù)組(array), true、false、null。不能有這之外的類型,例如undefined、函數(shù)等。請看概念圖。

字符串(string)的規(guī)則如下:

  1. 英文雙引號括起來,不能用單引號,也不能沒有。

  2. 字符串中不能單獨出現(xiàn)雙引號()和右斜杠(“\“)。

  3. 如果要打雙引號或右斜杠,需要使用“右斜杠+字符”的形式,例如\”\\,其它的轉(zhuǎn)義字符也是如此字符串的概念圖。

6、字符串轉(zhuǎn)化成對象



  • 解析:是指將符合JSON 語法規(guī)則的字符串轉(zhuǎn)換成對象的過程。

  • 不同的編程語言都提供了解析JSON字符串的方法,在這里主要講解JavaScript中的解析方法。主要有三種:

  1. 使用eval()

  2. 使用JSON.parse()

  3. 使用第三方庫,例如JQuery等

6.1、 eval()

  • eval()函數(shù)的參數(shù)是一個字符串,其作用是直接執(zhí)行其中的 JavaScript代碼。

案例:eval()解析字符串

<script> ?

var str = "console.log('hello')"; ?

eval(str);

</script>


  • eval 解析字符串的結(jié)果:

  • eval()能夠解析JSON字符串。從這里也可以看得出,JSON 和JavaScript是高度嵌合的。

  • 案例:eval()解析JSON字符串

<script> ?

var str = '{"name":"兮動人","age":22}'; ?

var obj = eval("("+str+")"); ?

console.log(obj)

</script>


  • 但是,現(xiàn)在已經(jīng)很少直接使用eval()來解析了,如果您的瀏覽器版本真的是很舊,可能才需要這個方法。此外,eval()是一個相對危險的函數(shù),因為字符串中可能含有未知因素。在這里,作為學(xué)習(xí),還是要知道這也是一種方法。

  • 請注意 eval()的參數(shù),在字符串兩旁加了括號,這是必須的,否則會報錯。

  • 因為JSON字符串是被大括號(“{}”)包圍的,直接放到?eval()會被當(dāng)成語句塊來執(zhí)行,因此要在兩旁加上括號,使其變成表達(dá)式。

6.2、JSON. parse()

  • 現(xiàn)在絕大多數(shù)瀏覽器都以支持JSON.parse(),是推薦使用的方式。

  • 如果輸入了不符合規(guī)范的字符串,會報錯。

案例:JSON字符串轉(zhuǎn)換為JS對象

<script> ? ?

var str = '{"name":"兮動人","age":22}'; ? ?

var obj = JSON.parse(str) ? ?

console.log(obj)

</script>


  • JSON.parse()可以有第二個參數(shù),是一個函數(shù)。此函數(shù)有兩個參數(shù):name和value,分別代表名稱和值。當(dāng)傳入一個JSON字符串后,JSON的每一組名稱/值對都要調(diào)用此函數(shù)。該函數(shù)有返回值,返回值將賦值給當(dāng)前的名稱(name)。

  • 利用第二個參數(shù),可以在解析JSON字符串的同時對數(shù)據(jù)進(jìn)行一些處理。

案例:


深入掌握J(rèn)son的評論 (共 條)

分享到微博請遵守國家法律
潜山县| 自治县| 淄博市| 阿城市| 桂平市| 尉氏县| 裕民县| 三都| 沙河市| 黎城县| 香河县| 固镇县| 梧州市| 霍林郭勒市| 调兵山市| 扎鲁特旗| 融水| 浦北县| 望都县| 高平市| 区。| 乐山市| 威远县| 麻城市| 乌审旗| 凉城县| 义乌市| 越西县| 达拉特旗| 北辰区| 天门市| 襄垣县| 扬州市| 吉林省| 江西省| 通辽市| 阜新市| 津市市| 城步| 桦南县| 湟源县|