第七週做業

1、JSON的簡介web

 

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫,同時也易於機器解析和生成。 JSON採用徹底獨立於語言的文本格式,可是也使用了相似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成爲理想的數據交換語言。編程

(1)JSON建構於兩種結構:json

  • 「名稱/值」對的集合(A collection of name/value pairs)。不一樣的語言中,它被理解爲對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分語言中,它被理解爲數組(array)。

這些都是常見的數據結構,事實上大部分現代計算機語言都以某種形式支持它們,這使得一種數據格式在一樣基於這些結構的編程語言之間交換成爲可能。數組

(2)JSON具備如下這些形式:數據結構

1. 對象是一個無序的「‘名稱/值’對」集合。一個對象以「{」(左括號)開始,「}」(右括號)結束。每一個「名稱」後跟一個「:」(冒號);「‘名稱/值’ 對」之間使用「,」(逗號)分隔。app

2. 數組是值(value)的有序集合。一個數組以「[」(左中括號)開始,「]」(右中括號)結束。值之間使用「,」(逗號)分隔。編程語言

3. 值(value)能夠是雙引號括起來的字符串(string)、數值(number)、truefalse、 null、對象(object)或者數組(array)。這些結構能夠嵌套。編碼

4.字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。rest

字符串(string)與C或者Java的字符串很是類似。code

5 . 數值(number)也與C或者Java的數值很是類似。除去不曾使用的八進制與十六進制格式。除去一些編碼細節。

2、JSON的語法

■對象是包含在括號({ }),它們的名稱-值對的分離逗號(,)以及一對中的名稱和值用冒號分隔(:)。的名字在一個對象中是字符串,而值多是7個值類型中的任意一個,包括另外一個對象或數組。

■數組是包含在方括號([]),和它們的值是由一個逗號分開(,)。數組中的每一個值均可能是另外一種類型,包括另外一個數組、一個對象。當對象和數組包含其餘對象或數組時,數據具備樹狀結構。

 

3、JSON的使用

JSON一般被用做序列化和反序列化數據的通用格式。在因特網上相互通訊的應用程序,這些應用程序是使用不一樣的編程語言建立的,而且運行的方式很是不一樣。JSON適合這個場景,由於它是一個開放的標準,很簡單。讀和寫,它比其餘表示更緊湊。rest式web服務普遍地使用JSON做爲請求內部數據的格式和響應。用於表示請求或請求的內容的HTTP頭。響應是JSON數據。內容類型:application / json

JSON表示一般比XML表示更緊湊,由於JSON沒有結束標記。與XML不一樣,JSON沒有被普遍接受用於定義和驗證JSON數據結構的模式。

 

4、生成和解析JSON數據

對於生成和解析JSON數據,有兩種編程模型(相似於用於XML文檔的):

■對象模型建立一個樹在內存中表示JSON數據。這棵樹而後能夠導航、分析或修改。這種方法是最靈活的,容許進行處理,這須要訪問樹的完整內容。可是,它一般比流模型要慢,須要更多的內存。對象模型經過一次導航整個樹來生成JSON輸出。

■流模型使用一個基於事件的解析器讀取JSON數據元素。解析器生成事件並中止處理。對象或數組的開始或結束,當它找到一個鍵,或當它找到一個值。應用程序代碼能夠處理或丟棄每一個元素,而後,解析器繼續進行下一個事件。這種方法適合於本地處理,在其中,一個元素的處理不須要其餘的信息的數據。流模型生成JSON輸出到給定的流一次只調用一個元素。

相關文章
相關標籤/搜索