QT开发中文网

Qt中请封装一个json格式数据类,来读取文件中的信息,然后保存到该类的成员变量中,用来查询等

在Qt中,可以使用QJsonDocumentQJsonObjectQJsonArray等类来处理JSON格式的数据。下面是一个简单的示例,演示如何封装一个JSON格式数据类,用于读取文件中的信息并将其存储到该类的成员变量中。

#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QString>
#include <QDebug>

class JsonData {
public:
    JsonData(const QString& filePath) {
        loadFromFile(filePath);
    }

    // 读取文件中的信息
    void loadFromFile(const QString& filePath) {
        QFile file(filePath);
        if (!file.open(QIODevice::ReadOnly)) {
            qWarning() << "Cannot open file:" << file.errorString();
            return;
        }

        QByteArray data = file.readAll();
        QJsonDocument doc(QJsonDocument::fromJson(data));

        if (doc.isNull()) {
            qWarning() << "Failed to create JSON doc.";
            return;
        }

        // 假设文件中的数据是一个JSON对象
        if (doc.isObject()) {
            QJsonObject jsonObj = doc.object();
            parseJson(jsonObj);
        } else {
            qWarning() << "JSON is not an object.";
        }
    }

    // 将解析后的数据保存到成员变量中
    void parseJson(const QJsonObject& jsonObj) {
        if (jsonObj.contains("name") && jsonObj["name"].isString()) {
            name = jsonObj["name"].toString();
        }
        
        if (jsonObj.contains("age") && jsonObj["age"].isDouble()) {
            age = jsonObj["age"].toInt();
        }

        // 可以添加更多字段的解析
    }

    // 查询方法示例
    QString getName() const { return name; }
    int getAge() const { return age; }

private:
    QString name;
    int age;
};

// 使用示例
int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    JsonData data("data.json");  // 假设你的JSON文件名为data.json

    qDebug() << "Name:" << data.getName();
    qDebug() << "Age:" << data.getAge();

    return a.exec();
}

JSON 文件格式示例

确保你有一个名为 data.json 的文件,其内容如下:

{
    "name": "John Doe",
    "age": 30
}

说明

  1. 构造函数: 类的构造函数接受一个文件路径参数,并尝试从该路径加载JSON数据。
  2. loadFromFile: 此函数打开指定路径的文件并读取内容,然后将其解析为QJsonDocument
  3. parseJson: 根据需要,将JSON对象中的特定字段解析为类的成员变量。
  4. 查询方法: 提供了获取名称和年龄的方法。

可以根据需要扩展这个类,以支持更多的功能或字段。


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • JSON 文件格式示例
  • 说明
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12596

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?