Json解析及解析原理


1. JSON的定義:

  一種輕量級的數據交換格式,具有良好的可讀和便於快速編寫的特性。業內主流技術為其提供了完整的解決方案(有點類似於正則表達式,獲得了當今大部分語言的支持),從而可以在不同平台間進行數據交換。JSON采用兼容性很高的文本格式,同事也具備類似於C語言體系的行為。

 

2. JSON  VS XML

1). JSON和XML的書可讀性基本相同;

2). JSON和XML同樣擁有豐富的解析手段;

3). JSON相對於XML來講,數據的體積小;

4). JSON與JavaScript的交互更加方便;

5). JSON對數據的描述性比XML較差;

6). JSON的速度要遠遠快於XML;

7). JSON數據可使用AJAX進行傳輸;

8). JSON具有層級結構(值中存在值)

 

3. JSON語法規則

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

1) 數據在名稱/值對中;

2) 數據由逗號分隔;

3) 花括號保存對象;

4) 方括號保存數組

 

4. JSON值

JSON值可以是:

1) 數字(證書或浮點數)

2) 字符串(在雙引號中)

3) 邏輯值(true或false)

4) 數組(在方括號中)

5) 對象(在花括號中)

6) null

 

5. JSON對象

JSON對象在花括號中書寫:

對象可以包含多個名稱/值對:

{"firstName":"John", "lastName":"Doe"}

 

6. JSON數組

JSON數組在方括號中書寫:

數組可包含多個對象:

{

"employees":[

{"firstName":"John", "lastName":"Doe"}

{"firstName":"Anna", "lastName":"Smith"}

{"firstName":"Peter", "lastName":"Jones"}

]

}

 

7. JSON使用JavaScript

因為JSON使用JavaScript語法,所以無需額外的軟件就能處理JavaScript中的JSON。

通過JavaScript,您可以創建一個對象數組,並像這樣進行賦值:

var employees = [

{"firstName":"Bill", "lastName":"Gates"}

{"firstName":"George", "lastName":"Bush"}

{"firstName":"Thomas", "lastName":"Carter"}

];

像這樣訪問JavaScript對象數組中的第一項:

employees[0].lastName;

修改數據:

employees[0].lastName="Jobs";

 

8. JSON文件

JSON文件的文件類型是".json"

JSON文本的MIME類型是"application/json"

 

9. 把JSON文本轉換為JavaScript對象

JSON最常見的用法之一,是從web服務器上讀取JSON數據(作為文件或作為HttpRequest),將JSON數據轉換為JavaScript對象,然后在網頁中使用該數據。

 

10. JSON實例-來自字符串的對象

創建包含JSON語法的JavaScript字符串

var txt = '{"employees":['+

' {"firstName":"Bill", "lastName":"Gates"}, ' +

' {"firstName":"George", "lastName":"Bush"}, '+

' {"firstName":"Thomas", "lastName":"Carter"} ]}';

由於JSON語法是JavaScript語法的子集,JavaScript函數eval()可用於將JSON文本轉換為JavaScript對象。

eval()函數使用的是JavaScript編譯器,可解析JSON文本,然后生成JavaScript對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:

var obj=eval("("+ txt +")");

11. JSON解析器

提示:eval()函數可編譯並執行任何JavaScript代碼。這隱藏了一個潛在的安全問題。

使用JSON解析器將JSON轉換為JavaScript對象是更安全的做法。JSON解析器只能識別JSON文本,而不會編譯腳本。

在瀏覽器中,這提供了原生的JSON支持,而且JSON解析器的速度更快。

較新的瀏覽器和ECMAScript(JavaScript)標准中均包含了原生的對JSON的支持。

Web瀏覽器支持 Web軟件支持

FireFox(Mozilla) 3.5

Internet Explorer 8

Chrome

Opera 10

Safari 4 

JQUery

Yahoo UI

Prototype

Dojo

ECMAScript 1.5

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM