Qt寫(xiě)入Json文件的方法詳解(含源碼+注釋)
一、示例Json文件內(nèi)容
下方為本文所使用的Json文件的內(nèi)容,其中包含字符串、數(shù)值、布爾、null、對(duì)象、數(shù)組等(寫(xiě)入方式在本文第三節(jié))
{
"array": [
"str",
88,
null
],
"bool": true,
"jChildObj": {
"age": 25,
"name": "tom"
},
"null": null,
"number": 66,
"str": "String"
}
二、Json寫(xiě)入會(huì)使用的類(介紹寫(xiě)入所使用的類在本文中的作用,個(gè)人理解)
- QJsonDocument:使用其提供的toJson函數(shù)獲取json串
- QJsonObject:創(chuàng)建用于存儲(chǔ)所有類型的根對(duì)象,和創(chuàng)建對(duì)象類型的變量
- QJsonArray:用于創(chuàng)建數(shù)組變量,并存放數(shù)組數(shù)據(jù)
三、Json文件的寫(xiě)入
3.1 常規(guī)類型的寫(xiě)入
創(chuàng)建根對(duì)象(QJsonObject)
//創(chuàng)建QJsonObject對(duì)象(姑且稱之為根對(duì)象),用于存放需要寫(xiě)入的數(shù)據(jù)
QJsonObject jObj;
常規(guī)對(duì)象的添加
//添加字符串類型
jObj.insert("str", "String");
//添加數(shù)值類型(在值為具體值時(shí)其中的QJsonValue可以不使用,直接放入值本身)
jObj.insert("number", QJsonValue(66));
//添加布爾類型
jObj.insert("bool", true);
//添加空值(直接放一個(gè)QJsonValue對(duì)象即可,不傳入值時(shí)默認(rèn)為空)
jObj.insert("null", QJsonValue());
3.2 對(duì)象及數(shù)組類型的添加
對(duì)象類型
//對(duì)象類型需要一個(gè)子QJsonObject對(duì)象存放,然后在添加到根QJsonObject對(duì)象中
QJsonObject jChildObj;
//添加值時(shí)直接使用如上方法添加具體值即可
jChildObj.insert("name", "tom");
jChildObj.insert("age", 25);
//當(dāng)子對(duì)象的值添加完成后將子對(duì)象添加到根對(duì)象中即可
jObj.insert("jChildObj", jChildObj);
數(shù)組類型
//創(chuàng)建數(shù)組對(duì)象
QJsonArray array;
//QJsonArray容器和普通容器的添加方法一樣,都可調(diào)用append函數(shù)
array.append("str");
array.append(88);
array.append(QJsonValue());
//數(shù)組中元素添加完成后將其添加到根對(duì)象中
jObj.insert("array", array);
3.3 Json串寫(xiě)入文件
//創(chuàng)建QJsonDocument對(duì)象并將根對(duì)象傳入
QJsonDocument jDoc(jObj);
//打開(kāi)存放json串的文件
QFile file("./jsonTest2.json");
if(!file.open(QIODevice::WriteOnly))
return 0;
//使用QJsonDocument的toJson方法獲取json串并保存到數(shù)組
QByteArray data(jDoc.toJson());
//將json串寫(xiě)入文件
file.write(data);
file.close();
總結(jié)
建議學(xué)習(xí)前先了解一下Json文件格式,組合類型只需將需要的類型添加到存放的類型中即可
到此這篇關(guān)于Qt寫(xiě)入Json文件的文章就介紹到這了,更多相關(guān)Qt寫(xiě)入Json文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
相關(guān)文章
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[六]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[六]...2007-02-02
C或C++報(bào)錯(cuò):ld returned 1 exit status報(bào)錯(cuò)的原因及解
這篇文章主要介紹了C或C++報(bào)錯(cuò):ld returned 1 exit status報(bào)錯(cuò)的原因及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
數(shù)據(jù)結(jié)構(gòu)之AVL樹(shù)詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之AVL樹(shù)詳解,本文非常細(xì)致的講解了AVL樹(shù)的基礎(chǔ)知識(shí)、AVL樹(shù)的旋轉(zhuǎn)操作、AVL數(shù)的插入和刪除操作等,需要的朋友可以參考下2014-08-08
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單通訊錄功能
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
jQuery移動(dòng)頁(yè)面開(kāi)發(fā)中主題按鈕的設(shè)計(jì)示例
這篇文章主要介紹了jQuery移動(dòng)頁(yè)面開(kāi)發(fā)中主題按鈕的設(shè)計(jì)示例,jQuery是當(dāng)今最具人氣的JavaScript開(kāi)發(fā)類庫(kù),需要的朋友可以參考下2015-12-12
C++11 shared_ptr 與 make_shared源碼剖析詳解
這篇文章主要介紹了C++11 shared_ptr 與 make_shared的源碼剖析,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
C/C++使用fmt庫(kù)實(shí)現(xiàn)格式化字符串
fmt庫(kù)是一個(gè)高效、易用的C++格式化庫(kù),可以幫助我們方便地進(jìn)行字符串格式化、輸出、日志記錄等操作,下面我們就來(lái)學(xué)習(xí)一下fmt格式化字符串的具體操作吧2023-12-12

