Content-Type: application/json
JSON是一種基於文本的數據交換格式,源於JavaScript,用於Web服務和其餘鏈接的應用程序。html
JSON只定義了兩種數據結構:對象和數組。一個對象是一組名稱 - 值對,一個數組是值的列表。JSON定義了七種值類型:字符串,數字,對象,數組,真,假和空值。java
JSON具備如下語法。git
對象包含在大括號({}
)中,它們的名稱 - 值對由逗號(,
)分隔,而且一對中的名稱和值由冒號(:
)分隔。對象中的名稱是字符串,而值能夠是七種值類型中的任何一種,包括另外一個對象或數組。github
數組包含在方括號([]
)中,而且它們的值由逗號(,
)分隔。數組中的每一個值均可以是不一樣的類型,包括另外一個數組或對象。編程
當對象和數組包含其餘對象或數組時,數據具備樹形結構。json
JSON常常用做通用格式,用於序列化和反序列化經過Internet互相通訊的應用程序中的數據。這些應用程序使用不一樣的編程語言建立,並運行在很是不一樣的環境中 JSON適用於這種狀況,由於它是一個開放標準,它易於讀寫,而且比其餘表示更緊湊。數組
RESTful Web服務普遍使用JSON做爲請求和響應中的數據格式。HTTP標頭用於指示請求或響應的內容是JSON數據數據結構
Content-Type: application/json
JSON表示一般比XML表示更緊湊,由於JSON沒有結束標記。與XML不一樣,JSON沒有普遍接受的架構來定義和驗證JSON數據的結構。架構
爲了生成和解析JSON數據,有兩種編程模型,它們與用於XML文檔的編程模型類似。app
對象模型建立一個表示內存中JSON數據的樹。而後能夠導航,分析或修改樹。這種方法是最靈活的,而且容許須要訪問樹的完整內容的處理。可是,它一般比流模式慢,須要更多內存。對象模型經過一次導航整個樹來生成JSON輸出。
流式傳輸模型使用基於事件的解析器,該解析器一次讀取一個元素的JSON數據。解析器生成事件並在對象或數組開始或結束時,當它找到一個鍵或找到一個值時中止處理。每一個元素均可以被應用程序代碼處理或丟棄,而後解析器繼續進行下一個事件。這種方法適用於本地處理,其中處理元素不須要來自其他數據的信息。流式傳輸模型經過一次對一個元素進行函數調用來生成給定流的JSON輸出。