1、依赖文件
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
#include <QStringList>
2、头文件
bool ReadJsonFile(const QString& filePath="");
bool WriteJsonFile(const QString& filePath="");
3、源文件
bool Widget::ReadJsonFile(const QString& filePath/*=""*/)
{// 读取JSON文件QFile file("data.json");if (!file.open(QIODevice::ReadOnly)) {qDebug() << "Failed to open JSON file.";return false;}QByteArray jsonData = file.readAll();file.close();// 解析JSON数据QJsonParseError parseError;QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &parseError);if (parseError.error != QJsonParseError::NoError) {qDebug() << "Failed to parse JSON:" << parseError.errorString();return false;}// 获取根对象QJsonObject jsonObj = jsonDoc.object();// 读取JSON数据QString name = jsonObj["name"].toString();int age = jsonObj["age"].toInt();qDebug() << "name:" << name;qDebug() << "age:" << age;QJsonObject jsonSubObj = jsonObj["hobbies"].toObject();QString type1 = jsonSubObj["type1"].toString();QString type2 = jsonSubObj["type2"].toString();qDebug() << "type1:" << type1;qDebug() << "type2:" << type2;return true;
}
bool Widget::WriteJsonFile(const QString& filePath/*=""*/)
{// 创建 JSON 对象QJsonObject jsonObj;jsonObj["name"] = "JSON";jsonObj["age"] = 20;QJsonObject jsonSubObj;jsonSubObj["type1"] = "Reading";jsonSubObj["type2"] = "Music";jsonObj["hobbies"] = jsonSubObj;// 将 JSON 对象转换为 JSON 文档QJsonDocument jsonDoc(jsonObj);// 将 JSON 文档转换为 JSON 字符串QByteArray jsonData = jsonDoc.toJson();// 写入 JSON 字符串到文件QFile file("data.json");if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {file.write(jsonData);file.close();qDebug() << "JSON data written to file successfully.";} else{qDebug() << "Failed to open file for writing.";}return true;
}
4、执行结果
name: "JSON"
age: 20
type1: "Reading"
type2: "Music"