qt-C++笔记之json文件内容操作完整例程
code review!
文章目录
1.运行输出
json
读取到的 JSON 对象: {
"Array": [
"Item1",
"Item2"
],
"Name": "Example",
"Value": 42
}
修改后的 JSON 对象: {
"Array": [
"Item1",
"Item2",
"Item3"
],
"Modified": true,
"Name": "Modified Example",
"Value": 42
}
2.运行后的test.json文件内容
json
{
"Array": [
"Item1",
"Item2",
"Item3"
],
"Modified": true,
"Name": "Modified Example",
"Value": 42
}
3.main.cpp
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();
}