1. 程式人生 > >學習JSON第一步

學習JSON第一步

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的資料交換語言。
(JSON官網)

以下內容來自IBM –JSON 入門指南 作者:廖雪峰

儘管有許多宣傳關於 XML 如何擁有跨平臺,跨語言的優勢,然而,除非應用於 Web Services,否則,在普通的 Web 應用中,開發者經常為 XML 的解析傷透了腦筋,無論是伺服器端生成或處理 XML,還是客戶端用 JavaScript 解析 XML,都常常導致複雜的程式碼,極低的開發效率。實際上,對於大多數 Web 應用來說,他們根本不需要複雜的 XML 來傳輸資料,XML 的擴充套件性很少具有優勢,許多 AJAX 應用甚至直接返回 HTML 片段來構建動態 Web 頁面。和返回 XML 並解析它相比,返回 HTML 片段大大降低了系統的複雜性,但同時缺少了一定的靈活性。

現在, JSON 為 Web 應用開發者提供了另一種資料交換格式。讓我們來看看 JSON 到底是什麼,同 XML 或 HTML 片段相比,JSON 提供了更好的簡單性和靈活性。

JSON 資料格式解析

和 XML 一樣,JSON 也是基於純文字的資料格式。由於 JSON 天生是為 JavaScript 準備的,因此,JSON 的資料格式非常簡單,您可以用 JSON 傳輸一個簡單的 String,Number,Boolean,也可以傳輸一個數組,或者一個複雜的 Object 物件。

String,Number 和 Boolean 用 JSON 表示非常簡單。例如,用 JSON 表示一個簡單的 String “ abc ”,其格式為:

"abc"

除了字元 “,\,/ 和一些控制符(\b,\f,\n,\r,\t)需要編碼外,其他 Unicode 字元可以直接輸出。下圖是一個 String 的完整表示結構:

圖 1. String 的完整表示結構
這裡寫圖片描述

一個 Number 可以根據整型或浮點數表示如下:

圖 2. Number 的表示結構
這裡寫圖片描述

這與絕大多數程式語言的表示方法一致,例如:

12345(整數) -3.9e10(浮點數)

Boolean 型別表示為 true 或 false 。此外,JavaScript 中的 null 被表示為 null,注意,true、false 和 null 都沒有雙引號,否則將被視為一個 String 。

JSON 還可以表示一個數組物件,使用 [] 包含所有元素,每個元素用逗號分隔,元素可以是任意的 Value,例如,以下陣列包含了一個 String,Number,Boolean 和一個 null:

["abc",12345,false,null]

Object 物件在 JSON 中是用 {} 包含一系列無序的 Key-Value 鍵值對錶示的,實際上此處的 Object 相當於 Java 中的 Map<String,Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。

例如,一個 Address 物件包含如下 Key-Value:

city:Beijing 
 street:Chaoyang Road 
 postcode:100025(整數)

用 JSON 表示如下:

{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

其中 Value 也可以是另一個 Object 或者陣列,因此,複雜的 Object 可以巢狀表示,例如,一個 Person 物件包含 name 和 address 物件,可以表示如下:

{"name":"Michael","address":
    {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}

小結

應用 JSON,我們可以從 XML 的解析中擺脫出來,對那些應用 Ajax 的 Web 2.0 網站來說,JSON 確實是目前最靈活的輕量級方案。