关于Qt中QJsonObject、QJsonArray生成与解析JSON文件

使用QJsonArray写文件:

  QString fileName = ":load.json";
    QFile srcFile(fileName);
    if(!srcFile.open(QFile::ReadWrite)){
        return;
    }
        QJsonArray json;
        //添加方式一:
        json.append("zhangSan");
        json.append(2018);
        json.append(true);
        /////////////////////
        //添加方式er:
//        json.insert(0,"zhangSan");
//        json.insert(1, 2018);
//        json.insert(2,true);
        QJsonDocument document;
        document.setArray(json);
        QByteArray byteArray = document.toJson(QJsonDocument::Compact);
        QString strJson(byteArray);
        QTextStream in(&srcFile);
        in<<strJson;
使用QJsonArray解析文件:

 QString fileName = ":load.json";
    QFile srcFile(fileName);
    if(!srcFile.open(QFile::ReadWrite)){
        return;
    }
    //解析方式一:
//        QJsonArray jsonAry = QJsonDocument::fromJson(QString(srcFile.readAll()).toUtf8()).array();
//        for(int i = 0; i< jsonAry.count(); i++)
//        {
//            QJsonValue value = jsonAry.at(i);
//            if(value.isString())
//            {
//                QString s = value.toString();
//                qDebug()<<"Array ------ 1"<<s;
//            }
//            if(value.toInt())
//            {
//                int t = value.toInt();
//                qDebug()<<"Array ------ 2"<<t;
//            }
//            if(value.isBool())
//            {
//                bool b = value.toBool();
//                qDebug()<<"Array ------ 3"<<b;
//            }
//        }
    //解析方式二:
    QJsonParseError error;
    QJsonDocument doucment = QJsonDocument::fromJson(srcFile.readAll(), &error);
    if (!doucment.isNull() && (error.error == QJsonParseError::NoError)) { //解析否出现错误
        if (doucment.isArray()) { // 数组判断
            QJsonArray array = doucment.array();  // 转数组
            for (int i = 0; i < array.count(); i++)
            {
                QJsonValue value = array.at(i);
                if (value.type() == QJsonValue::String)
                {
                    QString s = value.toString();
                    qDebug() <<"name:"<< s;
                }
                if (value.type() == QJsonValue::Double) {
                    int t = value.toInt();
                    qDebug() <<"time:"<<t;
                }
                if (value.type() == QJsonValue::Bool) {
                    bool b  = value.toBool();
                    qDebug()<<"qing:" << b;
                }
            }
        }
    }
使用QJsonObject生成文件:

 QString fileName = ":load.json";
    QFile srcFile(fileName);
    if(!srcFile.open(QFile::ReadWrite)){
        return;
    }
    QJsonObject json;
    json.insert("Name", "zhangSan");
    json.insert("Time", 2018);
    json.insert("Qing", true);
    QJsonDocument document;
    document.setObject(json);
    QByteArray byteArray = document.toJson(QJsonDocument::Compact);
    QString str(byteArray);
    QTextStream in(&srcFile);
    in<<str;
使用使用QJsonObject解析文件:
 QString fileName = ":load.json";
    QFile srcFile(fileName);
    if(!srcFile.open(QFile::ReadWrite)){
        return;
    }
    //解析方法一:
//    QJsonParseError error;
//    QJsonDocument doucment = QJsonDocument::fromJson(srcFile.readAll(), &error);
//    srcFile.close();
//    QJsonObject obj = doucment.object();
//    QString name = obj.take("Name").toString();
//    qDebug()<<"Name: " << name;
//    int time = obj.take("Time").toInt();
//    qDebug()<<"Time: "<<time ;
//    bool qing = obj.take("Qing").toBool();
//    qDebug()<<"Qing: "<<qing ;
    //解析方法二:
    QJsonObject jsonObj = QJsonDocument::fromJson(QString(srcFile.readAll()).toUtf8()).object();
    srcFile.close();
    qDebug()<<"Object Name: " << jsonObj.value("Name").toString();
    qDebug()<<"Object Time: " << jsonObj.value("Time").toInt();
    qDebug()<<"Object Qing: " << jsonObj.value("Qing").toBool();
熟悉这两种用法,基本稍微复杂一点的都可以生成或者解析

下载地址:https://download.csdn.net/download/u010304326/10394477
--------------------- 
作者:洗砚 
来源:CSDN 
原文:https://blog.csdn.net/u010304326/article/details/80207969 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_19004627/article/details/84313386