Qt中使用json格式封裝數據及解析數據

由於json格式的數據閱讀起來簡單方便,也便於機器解析與生成。在最近的項目中,使用json格式的數據可以快速的傳輸,首次使用這種格式,所以把自己的封裝數組的使用心得記錄下來。

        QJsonObject json;

        QJsonArray   Array;

   json.insert("x","100");
    json.insert("y","200");

     Array.push_back(json); 

    QJsonDocument jsonDoc(Array);

    QByteArray strArray = jsonDoc.toJson(QJsonDocument::Indented);

    QString string(strArray);

    QJsonObject strjson;

    strjson.insert("date",string);

   strjson.insert("time","2018.10.19");

   QJsonDocument strdocument;

   strdocument.setObjects(strjson);

 QByteArray Ary = strdocument.toJson(QJsonDocument::Indented);

最終的結果爲{"date" : "[ {"ux" : "100" , "uy" : "200"} ]" ,"time" : "2018.10.19"}

解析上面的json數據

QJsonParseError error;

QJsonDocument document = QJsonDocument::fromJson(Ary, &jsonError);

if(!document.isNull() &&(error.error = QJsonParseError::NoError)

{

     if(document.isObject())

   { 

       QJsonObject object = document.object();

      QJsonObject::Iterator it;

      for(it = object.begin;it != object.end;it++)

     {

         QString key = it.key();

         QString value = it.value().toString();

         if("time" == key)

         {

               qDebug()<<"time:"<<value;

         }  

          if("date" == key)

         {

              if(it.value.isArray())

             {

                    QJsonArray array = it.value().toString();

                     for(int i = 0;i < array.count(); i ++)

                    {

                          QJsonValue value = array.at(i);

                          QJsonObject object = value.toObject();//轉化爲對象

                          QJsonObject::Iterator it;

                          for(it = object.begin();it != object.end();it ++)

                         {

                                QString key = it.key();

                                QString value = it.value().toString();

                                 if("ux" == key)

                                 {

                                        qDebug()<<"ux:"<<value;

                                 }

                                 if("uy" == key)

                                 {

                                      qDebug()<<"uy:"<<value;

                                 }

                          }

                     }

             }    

         }

     }  

  }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章