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?
  • 热门搜索
    古着是什么意思 舌头发白什么原因 qq黄钻有什么用 什么的草坪 cry是什么意思 肝火旺盛有什么症状 新发展理念是什么 退税是什么意思 vb是什么 什么是音序