qt-C++笔记之json文件内容操作完整例程
code review!
文章目录
- qt-C++笔记之json文件内容操作完整例程
- 1.运行输出
- 2.运行后的test.json文件内容
- 3.main.cpp
1.运行输出
读取到的 JSON 对象: {"Array": ["Item1","Item2"],"Name": "Example","Value": 42
}修改后的 JSON 对象: {"Array": ["Item1","Item2","Item3"],"Modified": true,"Name": "Modified Example","Value": 42
}
2.运行后的test.json文件内容
{"Array": ["Item1","Item2","Item3"],"Modified": true,"Name": "Modified Example","Value": 42
}
3.main.cpp
#include <QCoreApplication>
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QFile>
#include <QIODevice>
#include <QDebug>// 函数:从文件读取 JSON 对象
QJsonObject readJsonFromFile(const QString &filePath) {QFile file(filePath);if (!file.open(QIODevice::ReadOnly)) {qWarning() << "无法打开文件进行读取:" << filePath;return QJsonObject();}QByteArray jsonData = file.readAll();file.close();QJsonDocument doc = QJsonDocument::fromJson(jsonData);if (doc.isNull()) {qWarning() << "解析 JSON 失败。";return QJsonObject();}return doc.object();
}// 函数:将 JSON 对象写入文件
void writeJsonToFile(const QString &filePath, const QJsonObject &jsonObject) {QJsonDocument doc(jsonObject);QFile file(filePath);if (!file.open(QIODevice::WriteOnly)) {qWarning() << "无法打开文件进行写入:" << filePath;return;}file.write(doc.toJson());file.close();
}int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QString filePath = "test.json";// 创建并写入初始 JSON 对象QJsonObject initialObj;initialObj["Name"] = "Example";initialObj["Value"] = 42;QJsonArray array;array.append("Item1");array.append("Item2");initialObj["Array"] = array;// 将初始 JSON 对象写入文件writeJsonToFile(filePath, initialObj);// 从文件读取 JSON 对象QJsonObject readObj = readJsonFromFile(filePath);// 打印读取到的 JSON 对象qDebug().noquote() << "读取到的 JSON 对象:" << QJsonDocument(readObj).toJson(QJsonDocument::Indented);// 修改读取到的 JSON 对象readObj["Modified"] = true;readObj["Name"] = "Modified Example";QJsonArray newArray = readObj["Array"].toArray();newArray.append("Item3");readObj["Array"] = newArray;// 将修改后的 JSON 对象再次写入文件writeJsonToFile(filePath, readObj);// 再次从文件读取修改后的 JSON 对象QJsonObject modifiedReadObj = readJsonFromFile(filePath);// 打印修改后的 JSON 对象qDebug().noquote() << "修改后的 JSON 对象:" << QJsonDocument(modifiedReadObj).toJson(QJsonDocument::Indented);return a.exec();
}