QT开发中文网

Json格式顶部就是一个array类型,如何解析?

如果JSON格式的顶层是一个数组类型,您可以使用 QJsonArray 来解析这个数组。以下是如何读取一个以数组为顶层结构的JSON文件的示例。

示例 JSON 文件 (data.json)

假设您的 data.json 文件内容如下:

[
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25},
    {"name": "Charlie", "age": 35}
]

C++ 示例代码

下面是一个示例程序,演示如何解析这种结构的JSON文件并访问其中的数据:

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

class JsonArrayHandler {
public:
    JsonArrayHandler(const QString &filePath) {
        loadJson(filePath);
    }

    void printAllEntries() {
        if (jsonDoc.isNull()) {
            qDebug() << "JSON document is null.";
            return;
        }

        if (jsonDoc.isArray()) {
            QJsonArray jsonArray = jsonDoc.array();
            for (const QJsonValue &value : jsonArray) {
                if (value.isObject()) {
                    QJsonObject obj = value.toObject();
                    QString name = obj["name"].toString();
                    int age = obj["age"].toInt();
                    qDebug() << "Name:" << name << ", Age:" << age;
                }
            }
        } else {
            qDebug() << "Top-level element is not an array.";
        }
    }

private:
    void loadJson(const QString &filePath) {
        QFile file(filePath);
        if (!file.open(QIODevice::ReadOnly)) {
            qDebug() << "Could not open the file!";
            return;
        }

        QByteArray jsonData = file.readAll();
        file.close();

        jsonDoc = QJsonDocument::fromJson(jsonData);
    }

    QJsonDocument jsonDoc;
};

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    JsonArrayHandler handler("data.json");
    
    // 打印所有条目
    handler.printAllEntries();

    return a.exec();
}

代码说明

  1. JsonArrayHandler

    • 在构造函数中加载 JSON 数据。
    • 提供方法 printAllEntries(),用于遍历 JSON 数组中的每个对象,并打印出 "name""age" 的值。
  2. 方法 loadJson():负责从指定路径读取 JSON 文件,并将其解析为 QJsonDocument

  3. 主函数:创建 JsonArrayHandler 实例并调用 printAllEntries() 方法来输出数组中的数据。

注意事项

  • 确保在处理之前检查是否成功加载和解析了JSON文件,以防止空指针引用等问题。
  • 您也可以根据需要扩展该类,以添加更多的方法或功能,比如查找特定条件下的数据。


    内容由零声教学AI助手提供,问题来源于学员提问
目录导航
  • 示例 JSON 文件 (data.json)
  • C++ 示例代码
  • 代码说明
  • 注意事项
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12592

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

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

    联系我们

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

    微信号:3007537140

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

    关注我们
    x

    注册

    已经有帐号?