JsonCPP在C++(QtCeater)中的简单使用(低版本QT)

1、示例Json

    //测试json串
    QString json_data = "{\
        \"FSHC\": 1,\
        \"SVSDVSS.ini\": {\
            \"md5\": \"WFEWFWFWEFW\",\
            \"relative_path\": \"/SFEWFW/ini/\"\
        },\
        \"SVSVS.jar\": {\
            \"md5\":\"SGERGERGER\",      \
            \"relative_path\": \"/GERGERGERG/\"\
        },\
        \"SVSVE.ico\": {\
            \"md5\": \"ASVDFBDFBDFBc\",\
            \"relative_path\": \"/SVDF/DS/\"\
        }\
    }";

2、引用库(JsonCPP) 可自行下载(或参考附件)https://download.csdn.net/download/qq_36939187/86503343

3、解析代码

//读取Json串
    Json::Value root;
    Json::Reader reader;
    if(!reader.parse(json_data.toStdString().c_str(), root))
    {
        // fail to parse
        qDebug() << "'fail";
    }
    else    // success
    {
        //解析是否更新
        bool bUpdate = false;
        bool bOffiaial = root[STR_OFFICIAL].asInt();
        qDebug() << " bOffiaial = " << bOffiaial;

        //解析待更新项
        QMap<QString, QMap<QString, QString> > fileInfo;    //解析Json文件信息
        Json::Value::Members rootMembers = root.getMemberNames();
        for(Json::Value::Members::iterator iter = rootMembers.begin(); iter != rootMembers.end(); ++iter)
        {
            if(Json::objectValue == root[*iter].type())
            {
                QString strRootItem =  QString::fromStdString(*iter);
                QMap<QString, QString> valueMap;
                Json::Value::Members childMember = root[*iter].getMemberNames();
                for(Json::Value::Members::iterator it = childMember.begin(); it != childMember.end(); ++it)
                {
                    QString strChildItem = QString::fromStdString(*it);
                    QString strChildValue = QString::fromStdString(root[*iter][*it].asString());
                    valueMap.insert(strChildItem, strChildValue);
                }
                fileInfo.insert(strRootItem, valueMap);
            }
    //        else if(Json::arrayValue == root[*iter].type())
    //        {
    //            //qDebug() << "Json::arrayValue = " << QString::fromStdString(root[*iter][i].asString());
    //        }
    //        else if (root[*iter].type() == Json::stringValue)
    //        {
    //            //qDebug() << QString::fromStdString(root[*iter].asString()) << endl;
    //        }
    //        else if (root[*iter].type() == Json::realValue)
    //        {
    //            //qDebug() << root[*iter].asDouble() << endl;
    //        }
    //        else if (Json::uintValue == root[*iter].type())
    //        {
    //            //qDebug() << root[*iter].asUInt();
    //        }
    //        else
    //        {
    //            //qDebug()  << root[*iter].asInt() << endl;
    //        }
        }
        qDebug() << fileInfo;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值