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?
  • 热门搜索
    自制披萨的做法 耳石症是怎么造成的 wow怎么读 腊肠的做法 回锅肉的家常做法 苹果手机没有声音怎么回事 鱿鱼的做法大全 家常 韭菜猪肉饺子馅的做法 腊肠的做法大全 六福珠宝怎么样