QJson使用

这段代码演示了如何在C++中使用Qt库的QJsonObject和QJsonDocument来创建和写入JSON数据。首先,创建了一个包含个人信息和家庭信息的对象,然后将这些数据写入到一个QByteArray中,并保存到'ace.json'文件。接着,代码展示了如何读取并解析这个JSON文件,打印出所有键值对,包括嵌套对象和数组。
摘要由CSDN通过智能技术生成
	QJsonObject obj;
    obj.insert("name","Ace");
    obj.insert("sex","man");
    obj.insert("agr","20");
    QJsonObject subobj;
    subobj.insert("father","Gol_D_Roger");
    subobj.insert("mother","ELLien_D_Roger");
    subobj.insert("brother","sabo");
    QJsonArray array;
    array.append("sabo");
    array.append("jalen");
    subobj.insert("brother",array);

    subobj.insert("isalive",true);
    obj.insert("family",subobj);
    QJsonDocument doc(obj);
    QByteArray json =doc.toJson();

    QFile file("D:\\ace.json");
    file.open(QIODevice::WriteOnly);
    file.write(json);
    file.close();

在这里插入图片描述


```cpp
void MainWindow::readJson()
{
    QFile file("D:\\ace.json");
    file.open(QIODevice::ReadOnly);
    QByteArray all =file.readAll();
    file.close();
    QJsonDocument doc;
    doc =QJsonDocument::fromJson(all);
    if(doc.isObject())
    {

        QJsonObject obj=doc.object();
        QStringList keys=obj.keys();
        for(int i=0;i<keys.size();++i)
        {
            QString key=keys.at(i);
            QJsonValue value=obj.value(key);
            if(value.isBool())
            {
           qDebug()<<key<<":"<<value.toBool();

            }
            else if(value.isString())
            {
                qDebug()<<key<<":"<<value.toString();

            }
            else if(value.isDouble())
            {
                qDebug()<<key<<":"<<value.toDouble();

            }else if(value.isObject())
            {
                qDebug()<<key;
                QJsonObject subobj= value.toObject();
                QStringList subkeys =subobj.keys();
                for(int k=0;k<subkeys.size();++k)
                {
                    QJsonValue subValue =subobj.value(subkeys.at(k));
                       if(subValue.isString())
                       {
                           qDebug()<<"   "<<subkeys.at(k)<<":"<<subValue.toString();

                       }else if(subValue.isArray())
                       {
                           QJsonArray array=subValue.toArray();
                            qDebug()<<"   "<<subkeys.at(k)<<":";
                           for(int j=0;j<array.size();++j)

                           {
                               qDebug()<<"             "<<array[j].toString();

                           }

                       }
                }
            }

        }
    }



}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值