Qt 操作Json格式文件(创建、插入、解析、修改、删除)

您所在的位置:网站首页 qt导出类图 Qt 操作Json格式文件(创建、插入、解析、修改、删除)

Qt 操作Json格式文件(创建、插入、解析、修改、删除)

2024-07-17 04:18| 来源: 网络整理| 查看: 265

花了几天时间研究Qt如何操作Json文件,也是有一点心得,现在记录下来分享!

为什么要学习Json呢?Json是一个轻量级数据存储文件,其里面使用了大量的字符进行存储数据。JSON 是存储和交换文本信息的语法,类似 XML。JSON 比 XML 更小、更快,更易解析。

JSON 是一种编码来自 Javascript 的对象数据的格式,但现在已广泛用作互联网上的数据交换格式。 Qt 中的 JSON 支持提供了易于使用的C++ API 来解析、修改和保存 JSON 数据。

当然,我学习Json,主要是因为我的上一篇博客中学习了Qt的Socket编程,个人觉得,如果是需要在TCP与UDP进行数据传送的话,使用Json文件传输效率会比较高吧…个人理解,不喜勿喷!

所以呢,今天带来一篇,使用Qt操作Json格式文件的博客,供大家参考、借鉴!

目录 一、准备工作二、封装Json三、解析Json四、修改Json五、删除Json六、全部代码七、总结

一、准备工作

VS编译器创建项目时,勾选Core项 在这里插入图片描述 QT编译器需要在.pro文件中 QT += Core

操作Json文件所需要用到的类:

类类说明QJsonDocument读写JSON文档QJsonObject封装JSON对象 { }QJsonArray封装JSON数组 [ ]QJsonValue封装JSON值 int,float,double,bool,{ },[ ]等QJsonParseError报告JSON处理过程中出现的错误

操作Json文件所需要用到的头文件: #include < QJsonObject > // { } #include < QJsonArray > // [ ] #include < QJsonDocument > // 解析Json #include < QJsonValue > // int float double bool null { } [ ] #include < QJsonParseError >

下图是这篇博客所操作的JSON文件: 在这里插入图片描述

二、封装Json

{ }

"interest": { "basketball": "篮球", "badminton": "羽毛球" },

代码实现上述效果:

// 定义 { } 对象 QJsonObject interestObj; // 插入元素,对应键值对 interestObj.insert("basketball", "篮球"); interestObj.insert("badminton", "羽毛球");

[ ]

"color": [ "black", "white"],

代码实现上述效果:

// 定义 [ ] 对象 QJsonArray colorArray; // 往数组中添加元素 colorArray.append("black"); colorArray.append("white");

[ { } { } ]

"like": [ { "game": "三国杀", "price": 58.5 }, { "game": "海岛奇兵", "price": 66.65 } ],

代码实现上述效果:

// 定义 { } 对象 QJsonObject likeObject1; likeObject1.insert("game", "三国杀"); likeObject1.insert("price", 58.5); QJsonObject likeObject2; likeObject2.insert("game", "海岛奇兵"); likeObject2.insert("price", 66.65); // 定义 [ ] 对象 QJsonArray likeArray; likeArray.append(likeObject1); likeArray.append(likeObject2);

{ { } { } }

"languages": { "serialOne": { "language": "汉语", "grade": 10 }, "serialTwo": { "language": "英语", "grade": 6 } },

代码实现上述效果:

// 定义 { } 对象 QJsonObject language1; language1.insert("language", "汉语"); language1.insert("grade", 10); QJsonObject language2; language2.insert("language", "英语"); language2.insert("grade", 6); QJsonObject languages; // 将{ } 插入 { } 中 languages.insert("serialOne", language1); languages.insert("serialTwo", language2);

定义根节点 也即是最外层 { }

// 定义根节点 也即是最外层 { } QJsonObject rootObject;

将上面定义的{ } 与 [ ] 都插入到跟节点{ }中

// 插入元素 rootObject.insert("name", "老王"); rootObject.insert("age", 26); rootObject.insert("interest", interestObj); rootObject.insert("color", colorArray); rootObject.insert("like", likeArray); rootObject.insert("languages", languages); rootObject.insert("vip", true); rootObject.insert("address", QJsonValue::Null);

实例化QJsonDocument对象

// 将json对象里的数据转换为字符串 QJsonDocument doc; // 将object设置为本文档的主要对象 doc.setObject(rootObject);

Json字符串保存到json文件里

QFile file("../Json/js.json"); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3