可以使用QJsonDocument和QJsonObject来修改json文件的节点。如果节点不存在,则可以创建一个新的节点。
以下是一个示例代码:
#include <QFile>
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
void updateJsonFile(QString filePath, QString nodeName, QString nodeValue)
{
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Failed to open file:" << filePath;
return;
}
QByteArray data = file.readAll();
file.close();
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(data, &error);
if (error.error != QJsonParseError::NoError) {
qDebug() << "Failed to parse json:" << error.errorString();
return;
}
QJsonObject obj = doc.object();
obj[nodeName] = nodeValue;
doc.setObject(obj);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Failed to write to file:" << filePath;
return;
}
file.write(doc.toJson());
}
该函数接受三个参数:filePath(文件路径),nodeName(要更新/创建的节点名称)和nodeValue(要设置的节点值)。它首先打开指定路径的文件并读取所有数据,然后将其解析为JSON文档。接下来,它使用QJsonObject类中的[]运算符来更新或创建指定的节点,并将其重新设置为JSON文档对象。最后,它再次打开文件以写入更新后的数据。
在使用该函数之前,请确保文件已存在且格式正确。此外,请注意,该函数会覆盖整个文件的内容。如果只想更新特定部分,请先使用其他方法读取和修改JSON数据。