Qt 操作Json格式文件(创建、插入、解析、修改、删除) |
您所在的位置:网站首页 › qt导出类图 › Qt 操作Json格式文件(创建、插入、解析、修改、删除) |
花了几天时间研究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 |