Qt寫入Json文件的方法詳解(含源碼+注釋)
更新時間:2022年10月21日 10:34:53 作者:lw只吃億點.
在Qt庫中,為JSON的相關操作提供了完整的類支持,下面這篇文章主要給大家介紹了關于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對象即可,不傳入值時默認為空) jObj.insert("null", QJsonValue());
3.2 對象及數(shù)組類型的添加
對象類型
//對象類型需要一個子QJsonObject對象存放,然后在添加到根QJsonObject對象中 QJsonObject jChildObj; //添加值時直接使用如上方法添加具體值即可 jChildObj.insert("name", "tom"); jChildObj.insert("age", 25); //當子對象的值添加完成后將子對象添加到根對象中即可 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();
總結
建議學習前先了解一下Json文件格式,組合類型只需將需要的類型添加到存放的類型中即可
到此這篇關于Qt寫入Json文件的文章就介紹到這了,更多相關Qt寫入Json文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
相關文章
解析一個有關sizeof用法的題目--sizeof(i++)
本篇文章是對一個關于sizeof用法的題目進行了詳細的分析介紹,需要的朋友參考下2013-06-06static_cast,dynamic_cast,reinterpret_cast和const_cast的區(qū)別詳解
以下是對static_cast,dynamic_cast,reinterpret_cast和const_cast之間的區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下2013-09-09