50.Qt-QJsonDocument读写json
2019-11-25 16:01:18来源:博客园 阅读 ()
50.Qt-QJsonDocument读写json
- QJsonDocument: 提供一种读取和写入JSON文档的方法,可以通过它的的成员函数array()或object()检索文档中包含的数组或对象,然后读取JSON数据,或者修改数据。
- QJsonObject: 封装了一个JSON对象, 可以使用它的成员函数size()、insert()和remove()来对修改JSON数据.
- QJsonArray: 封装了一个JSON数组,用来实现JSON数组的
1.解析JSON-示例
注意:JSON中的Key命名不能相同,否则的话会覆盖掉,比如:
{ "FLAG": 1, "FLAG": "example" }
最终只能读取到FLAG的"example"值.
json文件示例内容如下:
{ "FLAG": 1, "NAME": "example", "ARRAYS": [ { "Name": "array1", "String": "哈哈哒1" }, { "Name": "array2", "String": "哈哈哒2" }, { "Name": "array3", "String": "哈哈哒3" }, { "Name": "array4", "String": "哈哈哒4" } ] }
程序如下:
bool parseJson() { //打开文件 QFile file(QApplication::applicationDirPath()+"/1.json"); if(!file.open(QIODevice::ReadOnly)) { qDebug() << "File open failed!"; } else { qDebug() <<"File open successfully!"; } QJsonParseError *error=new QJsonParseError; QJsonDocument jdc=QJsonDocument::fromJson(file.readAll(),error); //判断文件是否完整 if(error->error!=QJsonParseError::NoError) { qDebug()<<"parseJson:"<<error->errorString(); return false; } QJsonObject obj = jdc.object(); //获取对象 qDebug() <<"object size:"<<obj.size(); QStringList list = obj.keys(); foreach (QString key, list) { if(obj[key].isString()) { qDebug()<<"key:"<<key<<"value:"<<obj[key].toString(); } else if(obj[key].isArray() && key =="ARRAYS") { QJsonArray arr = obj[key].toArray(); for(int i=0;i<arr.count();i++) { QJsonObject arrObj= arr[i].toObject(); qDebug()<<"key:\"Name\""<<"value:"<<arrObj["Name"].toString(); qDebug()<<"key:\"String\""<<"value:"<<arrObj["String"].toString(); } } } return true; }
打印如下:
写JSON-示例
代码如下:
bool writeJson() { //打开文件 QFile file(QApplication::applicationDirPath()+"/1.json"); if(!file.open(QIODevice::WriteOnly)) { qDebug() << "File open failed!"; } else { qDebug() <<"File open successfully!"; } QJsonDocument jdoc; QJsonObject obj; QJsonArray arr; for(int i=1;i<5;i++) { QJsonObject Member; //定义数组成员 Member["Name"] = QString("array%1").arg(i); Member["String"] = QString("哈哈哒%1").arg(i); arr.append(Member); } obj["ARRAYS"] = arr; obj["NAME"] ="example"; obj["FLAG"] ="1"; jdoc.setObject(obj); file.write(jdoc.toJson(QJsonDocument::Indented)); //Indented:表示自动添加/n回车符 file.close(); }
文件保存如下:
原文链接:https://www.cnblogs.com/lifexy/p/11930436.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:哈尔滨网络热身赛
下一篇:Linux低延迟服务器系统调优
- QT5 解析JSON文件 2020-06-09
- STM32F103驱动M24256 256k存储芯片进行读写 2020-05-28
- QT5中Json文件与QString的相互转化 2020-03-19
- 使用NlohmannJson写JSON保留插入顺序 2020-01-05
- C++构造和解析JSON 2019-10-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash