qt 读写json格式的配置文件

要点

  1. QJsonObject 
  2. QJsonDocument
  3. QFile file(fileName);
  4. file.write(jsonDoc.toJson(QJsonDocument::Indented)); // 缩进格式化输出
  5. QByteArray jsonData = file.readAll(); 

在 Qt 中,读写 JSON 格式的配置文件通常使用 QJsonDocumentQJsonObjectQJsonArray 和 QFile 类。以下是一个简单的例子,展示了如何使用这些类来读写 JSON 文件。

写入 JSON 文件

#include <QFile>  
#include <QJsonDocument>  
#include <QJsonObject>  
  
void writeJsonConfigFile(const QString &fileName) {  
    // 创建一个 QJsonObject  
    QJsonObject jsonObject;  
    jsonObject["user"] = QJsonObject {  
        {"name", "John Doe"},  
        {"age", 30},  
        {"email", "johndoe@example.com"}  
    };  
  
    // 将 QJsonObject 转换为 QJsonDocument  
    QJsonDocument jsonDoc(jsonObject);  
  
    // 写入文件  
    QFile file(fileName);  
    if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {  
        file.write(jsonDoc.toJson(QJsonDocument::Indented)); // 缩进格式化输出  
        file.close();  
    }  
}

读取 JSON 文件

#include <QFile>  
#include <QJsonDocument>  
#include <QJsonObject>  
#include <QDebug>  
  
QJsonObject readJsonConfigFile(const QString &fileName) {  
    QFile file(fileName);  
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))  
        return QJsonObject(); // 返回空对象或处理错误  
  
    // 读取文件内容  
    QByteArray jsonData = file.readAll();  
    QJsonParseError jsonError;  
    QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &jsonError);  
  
    // 检查 JSON 解析是否成功  
    if (jsonError.error != QJsonParseError::NoError) {  
        qDebug() << "JSON 解析错误:" << jsonError.errorString();  
        return QJsonObject(); // 返回空对象或处理错误  
    }  
  
    // 假设顶层是一个 QJsonObject  
    return jsonDoc.object();  
}  
  
// 使用示例  
void useJsonConfigFile(const QString &fileName) {  
    QJsonObject jsonObject = readJsonConfigFile(fileName);  
    if (!jsonObject.isEmpty()) {  
        QJsonObject userObject = jsonObject["user"].toObject();  
        QString name = userObject["name"].toString();  
        int age = userObject["age"].toInt();  
        qDebug() << "Name:" << name << ", Age:" << age;  
    }  
}

在这个例子中,writeJsonConfigFile 函数创建了一个包含用户信息的 QJsonObject,然后将其转换为一个 QJsonDocument 并写入文件。readJsonConfigFile 函数读取一个 JSON 文件,解析其内容,并返回一个 QJsonObject。如果解析过程中出现错误,它将返回一个空的 QJsonObject

请注意,这个例子假设 JSON 文件的顶层是一个对象。如果 JSON 文件以数组开始,你需要相应地调整代码来处理 QJsonArray

此外,错误处理在这个例子中是非常基础的。在实际应用中,你可能需要更复杂的错误处理逻辑,例如显示错误消息给用户或尝试恢复默认配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值