標籤:qt開發 json簡介
QT開發(六十一)———Json簡介一、JSON簡介
1、JSON簡介
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式設定,使用了類C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。
JSON使用JavaScript文法來描述資料對象,但是JSON仍然獨立於語言和平台。JSON解析器和JSON庫支援許多不同的程式設計語言。
2、JSON文法
JSON文法是JavaScript對象標記法文法的子集,文法規則如下:
A、資料在名稱/值對中
B、資料由逗號分隔
C、花括弧儲存對象
D、方括弧儲存數組
3、
JSON名稱/值對
JSON 資料的書寫格式是:成對的名稱和數值。
名稱/值對包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值:
"firstName" : "John"
4、
JSON值
JSON值類型:
數字(整數或浮點數)
字串(在雙引號中)
邏輯值(true或false)
數組(在方括弧中)
對象(在花括弧中)
null
5、
JSON 對象
JSON對象在花括弧中書寫:
對象可以包含多個名稱/值對:
{ "firstName":"John" , "lastName":"Doe" }
6、
JSON 數組
JSON數組在方括弧中書寫:
數組可包含多個對象:
{"employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" }]}
二、JSON基礎結構
JSON結構有兩種結構:對象和數組。
1、
對象
對象表示為“{}”括起來的內容,資料結構為 {key:value,key:value,...}的索引值對的結構。在物件導向的語言中,key為對象的屬性,value為對應的屬性值,擷取屬性值方法為:對象.key,屬性值的類型可以是數字、字串、數組、對象。
{"firstName":"Brett"}
{"firstName":"Brett","lastName":"McLaughlin","email":"[email protected]"}
當多個"成對的名稱和數值"串在一起時,JSON更容易使用,且可讀性更好。當多個"成對的名稱和數值"明確地表示多個值都是同一記錄的一部分,花括弧使多個值間有了某種聯絡。
2、
數組
數組表示為中括弧“[]”括起來的內容,資料結構為 ["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" }]}
本文出自 “生命不息,奮鬥不止” 部落格,謝絕轉載!
QT開發(六十一)———Json簡介