QT5解析嵌套Json

 时间:2026-04-21 21:01:06

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;

}

  • windows如何上传到文件linux服务器上-Sftp上传
  • rabbitmq如何清缓存
  • 报表生成器FineReport中如何实现自动查询
  • Xshell远程中文Linux显示乱码的解决办法
  • Notepad++如何安装使用Vim?visimulator?
  • 热门搜索
    儿童早餐食谱家常做法 粘米粉的做法大全 电脑蓝屏了怎么办修复 肱怎么读 海瓜子的做法 鸡胗做法 富贵竹叶子发黄怎么救 发际线高怎么办 酿豆腐的做法 火山小视频怎么赚钱