javascript
【Qt】Qt中JSON简介
00. 目錄
文章目錄
- 00. 目錄
- 01. JSON簡(jiǎn)介
- 02. JSON Support in Qt
- 03. JSON類(lèi)
- 04. 附錄
01. JSON簡(jiǎn)介
1.1 JSON概述
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,使用了類(lèi)C語(yǔ)言家族的習(xí)慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。
JSON使用JavaScript語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象,但是JSON仍然獨(dú)立于語(yǔ)言和平臺(tái)。JSON解析器和JSON庫(kù)支持許多不同的編程語(yǔ)言。
1.2 JSON語(yǔ)法
JSON語(yǔ)法是JavaScript對(duì)象表示法語(yǔ)法的子集,語(yǔ)法規(guī)則如下:
-
數(shù)據(jù)在名稱(chēng)/值對(duì)中
-
數(shù)據(jù)由逗號(hào)分隔
-
花括號(hào)保存對(duì)象
-
方括號(hào)保存數(shù)組
1.3 JSON鍵值對(duì)
JSON 數(shù)據(jù)的書(shū)寫(xiě)格式是:名稱(chēng)/值對(duì)。
名稱(chēng)/值對(duì)包括字段名稱(chēng)(在雙引號(hào)中),后面寫(xiě)一個(gè)冒號(hào),然后是值
"firstName" : "John"1.4 JSON值類(lèi)型
-
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
-
字符串(在雙引號(hào)中)
-
邏輯值(true或false)
-
數(shù)組(在方括號(hào)中)
-
對(duì)象(在花括號(hào)中)
-
null
1.5 JSON對(duì)象
JSON對(duì)象在花括號(hào)中書(shū)寫(xiě):
對(duì)象可以包含多個(gè)名稱(chēng)/值對(duì):
{ "firstName":"Jin" , "lastName":"Deng" }1.6 JSON數(shù)組
JSON數(shù)組在方括號(hào)中書(shū)寫(xiě):
數(shù)組可包含多個(gè)對(duì)象:
{"people":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}] }02. JSON Support in Qt
2.1 Qt中JSON概述
Qt提供了處理JSON數(shù)據(jù)的支持。JSON是一種編碼來(lái)自Javascript的對(duì)象數(shù)據(jù)的格式,但現(xiàn)在已廣泛用作Internet上的數(shù)據(jù)交換格式。
Qt中的JSON支持提供了易于使用的C ++ API來(lái)解析,修改和保存JSON數(shù)據(jù)。它還支持以二進(jìn)制格式保存此數(shù)據(jù),該格式可以直接“ mmap”訪問(wèn)并且訪問(wèn)速度非常快。
有關(guān)JSON數(shù)據(jù)格式的更多詳細(xì)信息,可以在json.org和RFC-4627中找到。
2.2 Qt中JSON類(lèi)型
JSON是一種存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)的格式。它具有6種基本數(shù)據(jù)類(lèi)型:
- bool
- double
- string
- array
- object
- null
值可以具有上述任何類(lèi)型。布爾值由JSON中的true或false字符串表示。JSON并未明確指定數(shù)字的有效范圍,但是Qt中的支持僅限于有效范圍和雙精度。字符串可以是任何有效的unicode字符串。數(shù)組是值的列表,而對(duì)象是鍵/值對(duì)的集合。對(duì)象中的所有鍵都是字符串,并且對(duì)象不能包含任何重復(fù)的鍵。
JSON的文本表示形式將數(shù)組括在方括號(hào)([…])中,將對(duì)象括在大括號(hào)({…})中。數(shù)組和對(duì)象中的條目以逗號(hào)分隔。對(duì)象中鍵和值之間的分隔符是冒號(hào)(:)。
簡(jiǎn)單的JSON例子如下:
{"FirstName": "John","LastName": "Doe","Age": 43,"Address": {"Street": "Downing Street 10","City": "London","Country": "Great Britain"},"Phone numbers": ["+44 1234567","+44 2345678"]}上面的示例由一個(gè)具有5個(gè)鍵/值對(duì)的對(duì)象組成。其中兩個(gè)值是字符串,一個(gè)是數(shù)字,一個(gè)是另一個(gè)對(duì)象,最后一個(gè)是數(shù)組。
有效的JSON文檔是數(shù)組或?qū)ο?#xff0c;因此文檔始終以方括號(hào)或大括號(hào)開(kāi)頭。
03. JSON類(lèi)
QT4中使用第三方庫(kù)QJson解析JSON文件。
QT5新增加了處理JSON的類(lèi),類(lèi)均以QJson開(kāi)頭,包含在QtCore模塊中。
QT5新增加如下七個(gè)相關(guān)類(lèi):
| QJsonDocument | 讀寫(xiě) JSON 文檔 |
| QJsonObject | 封裝 JSON 對(duì)象 |
| QJsonObject::iterator | 用于遍歷QJsonObject的STL風(fēng)格的非const遍歷器 |
| QJsonParseError | 報(bào)告 JSON 處理過(guò)程中出現(xiàn)的錯(cuò)誤 |
| QJsonValue | 封裝 JSON 值 |
| QJsonArray | 封裝 JSON 數(shù)組 |
04. 附錄
4.1 JSON官方網(wǎng)站:http://json.org/
4.2 JsonCpp源碼下載:https://github.com/open-source-parsers/jsoncpp
總結(jié)
以上是生活随笔為你收集整理的【Qt】Qt中JSON简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【OpenSSL】OpenSSL之SHA
- 下一篇: Spring_mvc ioc/DI 控制