Qt寫入Json文件的方法詳解(含源碼+注釋)
一、示例Json文件內(nèi)容
下方為本文所使用的Json文件的內(nèi)容,其中包含字符串、數(shù)值、布爾、null、對(duì)象、數(shù)組等(寫入方式在本文第三節(jié))
{
"array": [
"str",
88,
null
],
"bool": true,
"jChildObj": {
"age": 25,
"name": "tom"
},
"null": null,
"number": 66,
"str": "String"
}
二、Json寫入會(huì)使用的類(介紹寫入所使用的類在本文中的作用,個(gè)人理解)
- QJsonDocument:使用其提供的toJson函數(shù)獲取json串
- QJsonObject:創(chuàng)建用于存儲(chǔ)所有類型的根對(duì)象,和創(chuàng)建對(duì)象類型的變量
- QJsonArray:用于創(chuàng)建數(shù)組變量,并存放數(shù)組數(shù)據(jù)
三、Json文件的寫入
3.1 常規(guī)類型的寫入
創(chuàng)建根對(duì)象(QJsonObject)
//創(chuàng)建QJsonObject對(duì)象(姑且稱之為根對(duì)象),用于存放需要寫入的數(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串寫入文件
//創(chuàng)建QJsonDocument對(duì)象并將根對(duì)象傳入
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
相關(guān)文章
C++實(shí)現(xiàn)惡搞電腦關(guān)機(jī)小程序的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的惡搞電腦關(guān)機(jī)小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11
解析一個(gè)有關(guān)sizeof用法的題目--sizeof(i++)
本篇文章是對(duì)一個(gè)關(guān)于sizeof用法的題目進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
static_cast,dynamic_cast,reinterpret_cast和const_cast的區(qū)別詳解
以下是對(duì)static_cast,dynamic_cast,reinterpret_cast和const_cast之間的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-09-09
C++高性能服務(wù)器框架之協(xié)程調(diào)度模塊
這篇文章主要介紹了C++高性能服務(wù)器框架中的協(xié)程調(diào)度模塊,文中通過代碼示例介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-06-06

