查看完整版本: [-- QT json --]

QTCN开发网 -> Qt基础编程 -> QT json [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

amwha 2017-05-10 15:41

QT json

json解析:
  
  1. #include <QCoreApplication>

    #include <QFile>
    #include <QTextStream>
    #include <QJsonArray>
    #include <QJsonDocument>
    #include <QJsonObject>
    #include <QDebug>


    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    {
        QVariantList people;

        QVariantMap bob;
        bob.insert("Name", "Bob");
        bob.insert("Phonenumber", 123);

        QVariantMap alice;
        alice.insert("Name", "Alice");
        alice.insert("Phonenumber", 321);

        people << bob << alice;

        QJsonDocument jsonDocument = QJsonDocument::fromVariant(people);

        QByteArray byte_array = jsonDocument.toJson();

        QFile file("./test1.js");
        file.open(QIODevice::WriteOnly);
        QTextStream stream(&file);
        stream << byte_array << "\r\n";
        file.flush();
        file.close();

        QJsonParseError ParseError;
        QJsonDocument praseDoc = QJsonDocument::fromJson(byte_array,&ParseError);

        if(ParseError.error == QJsonParseError::NoError)
        {
            if(praseDoc.isArray())
            {
                QJsonArray array = praseDoc.array();

                for(int i = 0 ; i <  array.size(); i++)
                {
                    QVariantMap result = array.at(i).toVariant().toMap();


                    for(QVariantMap::iterator iter = result.begin();iter != result.end();iter++)
                    {
                        QString key = iter.key();
                        QVariant value = iter.value();

                        qDebug()<<key<<value.toString();
                    }
                }
                qDebug()<<"/////////////other method/////////////";
                for(int i = 0 ; i <  array.size(); i++)
                {
                    QJsonObject obj = array.at(i).toObject();

                    qDebug()<<obj.value("Name").toString()<<obj.value("Phonenumber").toInt();
                }

            }
        }
    }
    qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
    {
        QJsonObject json_object1;
        json_object1.insert("ID",        "1263");
        json_object1.insert("Name",      "lin");
        json_object1.insert("age",       20);

        QJsonObject json_object2;
        json_object2.insert("ID",      "2345");
        json_object2.insert("Name",      "jin");
        json_object2.insert("age",       5);

        QJsonArray json_array;

        json_array.insert(0,json_object1);
        json_array.insert(1,json_object2);

        QByteArray byte_array = QJsonDocument(json_array).toJson();

        QJsonArray json_array2 = QJsonDocument::fromJson(byte_array).array();

        for(int i = 0; i < json_array2.size(); ++i)
        {
            QJsonObject json = json_array2.at(i).toObject();
            qDebug() << json.value("ID").toString();
            qDebug() << json.value("Name").toString();
            qDebug() << json.value("age").toInt();
        }

        QFile file("./test2.js");
        file.open(QIODevice::WriteOnly);
        QTextStream stream(&file);
        stream <<byte_array<<"\r\n";
        file.flush();
        file.close();
    }
    qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
    {
        QString json("{"
                "\"encoding\" : \"UTF-8\","
                "\"plug-ins\" : ["
                "\"python\","
                "\"c++\","
                "\"ruby\""
                "],"
                "\"indent\" : { \"length\" : 3, \"use_space\" : true }"
                "}");
        QJsonParseError error;
        QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toUtf8(), &error);
        if (error.error == QJsonParseError::NoError)
        {
            if (jsonDocument.isObject())
            {
                QVariantMap result = jsonDocument.toVariant().toMap();
                qDebug() << "encoding:" << result["encoding"].toString();
                qDebug() << "plugins:";

                foreach (QVariant plugin, result["plug-ins"].toList()) {
                    qDebug() << "\t-" << plugin.toString();
                }

                QVariantMap nestedMap = result["indent"].toMap();
                qDebug() << "length:" << nestedMap["length"].toInt();
                qDebug() << "use_space:" << nestedMap["use_space"].toBool();
            }
        }

        QByteArray byte_array = jsonDocument.toJson();


        QFile file("./test3.js");
        file.open(QIODevice::WriteOnly);
        QTextStream stream(&file);
        stream << byte_array<<"\r\n";
        file.flush();
        file.close();
    }
    qDebug()<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
    {

        QJsonObject person;
        person.insert("ID",        "1263");
        person.insert("Name",      "lin");
        person.insert("age",       20);


        QJsonObject company;
        company.insert("Name",     "HH CO.LMT");
        company.insert("Location", "guangzhou");
        company.insert("businss",   "med");


        QJsonObject json_object;
        json_object.insert("person", QJsonValue(person));
        json_object.insert("company", QJsonValue(company));

       QByteArray byte_array =  QJsonDocument(json_object).toJson();

       QJsonParseError ParseError;
       QJsonDocument praseDoc = QJsonDocument::fromJson(byte_array,&ParseError);

       if(ParseError.error == QJsonParseError::NoError)
       {
           if(praseDoc.isObject())
           {
                QJsonObject objs = praseDoc.object();

                QVariantMap result = objs.value("company").toVariant().toMap();

                qDebug()<< result["Location"].toString();
                qDebug()<< result["Name"].toString();
                qDebug()<< result["businss"].toString();

                result = objs.value("person").toVariant().toMap();

                qDebug()<< result["ID"].toString();
                qDebug()<< result["Name"].toString();
                qDebug()<< result["age"].toString();
           }
       }

       QFile file("./test4.js");
       file.open(QIODevice::WriteOnly);
       QTextStream stream(&file);
       stream << byte_array<<"\r\n";
       file.flush();
       file.close();
    }

        return a.exec();
    }


never_forget 2017-05-10 17:22
楼主你是在秀代码嘛 ?


查看完整版本: [-- QT json --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled