JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用徹底獨立於語言的文本格式,使用了類C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。javascript
JSON使用JavaScript語法來描述數據對象,可是JSON仍然獨立於語言和平臺。JSON解析器和JSON庫支持許多不一樣的編程語言。java
JSON語法是JavaScript對象表示法語法的子集,語法規則以下:編程
A、數據在名稱/值對中數組
B、數據由逗號分隔數據結構
C、花括號保存對象編程語言
D、方括號保存數組ide
JSON 數據的書寫格式是:名稱/值對。ui
名稱/值對包括字段名稱(在雙引號中),後面寫一個冒號,而後是值:spa
"firstName" : "John"對象
JSON值類型:
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true或false)
數組(在方括號中)
對象(在花括號中)
null
JSON對象在花括號中書寫:
對象能夠包含多個名稱/值對:
{ "firstName":"John" , "lastName":"Doe" }
JSON數組在方括號中書寫:
數組可包含多個對象:
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" }] }
JSON結構有兩種結構:對象和數組。
對象表示爲「{}」括起來的內容,數據結構爲 {key:value,key:value,...}的鍵值對的結構。在面向對象的語言中,key爲對象的屬性,value爲對應的屬性值,獲取屬性值方法爲:對象.key,屬性值的類型能夠是數字、字符串、數組、對象。
{"firstName":"Brett"}
{"firstName":"Brett","lastName":"McLaughlin","email":"scorpio@hotmai.com"}
當多個"名稱/值對"串在一塊兒時,JSON更容易使用,且可讀性更好。當多個"名稱/值對"明確地表示多個值都是同一記錄的一部分,花括號使多個值間有了某種聯繫。
數組表示爲中括號「[]」括起來的內容,數據結構爲 ["java","javascript","vb",...],取值方式使用索引獲取,字段值的類型能夠是數字、字符串、數組、對象。
當須要表示一組值時,JSON不但可以提升可讀性,並且能夠減小複雜性。
單個值的變量(包含多條記錄)以下:
{ "people":[ {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason","lastName":"Hunter","email":"bbbb"}, {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}] }
people變量,值是包含三個條目的數組,每一個條目是一我的的記錄,其中包含名、姓和電子郵件地址。
多個值的變量(每一個值包含多個記錄)以下:
{ "programmers": [ { "firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName": "Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "cccc" }], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "sciencefiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christianfiction" }], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }] }