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

