QT5解析嵌套Json

2026-03-22 16:59:12

1、/* CJson.h */

#include <QJsonDocument>

#include <QJsonObject>

#include <QJsonValue>

class CJson

{

public:

    CJson();

    QString decode(const QByteArray byteArray, QString key);

    QString getValueBykey(QJsonObject obj, QString key);

private:

};

2、/* CJson.cpp */

#include <iostream>

#include <QStringList>

#include "cjson.h"

CJson::CJson()

{

        // Do nothing.

}

QString CJson::decode(const QByteArray byteArray, QString key)

{

    // Check input

    if ( byteArray.isEmpty() || 0 == key.compare(""))

    {

        return "";

    }

    QString str = "";

    QJsonParseError jsonError;

    QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray, &jsonError);

    if(jsonError.error == QJsonParseError::NoError)

    {

        if(jsonDoc.isObject())

        {

            QJsonObject obj = jsonDoc.object();

            // Loop get value according the key world

            str = getValueBykey(obj, key);

        }

    }

    return str;

}

QString CJson::getValueBykey(QJsonObject obj, QString key)

{

    QString rst = "";

    QStringList strList = obj.keys();

     for (int i = 0; i < obj.size(); i++)

     {

         QJsonValue val = obj.value(strList.at(i));

         if ( strList.at(i) == key && val.isString())

         {

             rst = val.toString();

         }

         else if (val.isObject())

         {

             rst = getValueBykey(val.toObject(), key);

         }

     }

    return rst;

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢