这段代码演示了如何使用 Qt 的 QJsonDocument 类解析 JSON 对象并访问其子对象和数组元素。

代码示例:

if( !jsonDoc.isNull() && (json_error.error == QJsonParseError::NoError) )
{
    qDebug() << 'jsonDoc: \n' << jsonDoc;

    QJsonObject rootObj = jsonDoc.object();
    QStringList keys = rootObj.keys();
    for(const auto& key : rootObj.keys())
    {
        QJsonValue value = rootObj.value(key);

        if(value.isString())
        {
            qDebug() << key << ':' << value.toString();
        }
        else if(value.isObject())
        {
            qDebug() << key << ':';

            QJsonObject subObj = value.toObject();
            QStringList subKeys = subObj.keys();
            for(auto subKey : subKeys)
            {
                QJsonValue subValue = subObj.value(subKey);

                if(subValue.isString())
                {
                    qDebug() << '\t' << subKey << ':' << subValue.toString();
                }
            }
        }
        // 注释部分:处理数组元素
        // else if(value.isArray())
        // {
        //     QJsonArray arr = value.toArray();
        //     for(int i = 0; i < arr.count(); i++)
        //     {
        //         qDebug() << key << ':' << arr.at(i).toString();
        //     }
        // }
    }
}
    else
    {
        qDebug() << QString('JsonPareError: %1').arg(json_error.errorString());
        return;
    }

代码解释:

  1. 判断 JSON 解析是否成功: 代码首先检查 JSON 解析是否成功,如果 jsonDoc 不为空且 json_error 为 NoError,则说明解析成功,继续执行后续操作。
  2. 访问根对象: 代码通过 jsonDoc.object() 获取根对象,并使用 keys() 方法获取所有键值。
  3. 遍历键值: 代码使用 for 循环遍历所有键值,并使用 value() 方法获取每个键值对应的值。
  4. 处理不同数据类型: 代码根据值的类型进行不同的处理。如果值为字符串类型,则直接输出键值对;如果值为对象类型,则递归地遍历子对象;如果值为数组类型,则遍历数组中的元素。
  5. 处理数组: 代码中注释掉的部分是处理数组元素的部分。如果需要处理数组,可以取消注释该部分代码,并按照相应的逻辑处理数组中的元素。

总结:

这段代码演示了如何使用 Qt 的 QJsonDocument 类解析 JSON 对象,并访问其子对象和数组元素。通过代码示例,我们可以学习到如何遍历对象和数组,以及如何根据数据类型进行不同的处理。同时,代码中注释的部分也为我们提供了一个处理数组元素的思路。

Qt QJsonDocument 解析 JSON 对象:访问子对象及数组元素示例

原文地址: https://www.cveoy.top/t/topic/nXLQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录