Qt 解析Json

      網友投稿 965 2025-04-01

      開發環境 Qt5.5.1、Qt Creator 3.5.1


      常用的JSON

      QJSONDocument有效解析后的文檔可以使用!iSNull()判斷。使用isArray()和isObject()來判斷是否包含一個數組或對象。文檔中包含的數組或對象可以使用array()或object()進行檢索,然后讀取或操縱。

      代碼如下:

      #include

      #include

      #include

      #include

      //生成Json

      QString generateJsonStr() {

      QJsonObject jsonObj;

      jsonObj.insert("name", "chy龍神");

      jsonObj.insert("age", 24);

      jsonObj.insert("man", true);

      QJsonDocument document;

      document.setObject(jsonObj);

      //格式化方式有2種: Compact(壓緊)、Indented(縮進排印的,該方法解析出的QJsonValue會帶\n)

      QByteArray byteArr = document.toJson(QJsonDocument::Compact);

      QString jsonStr(byteArr);

      qDebug()<<"generateJsonStr: "<

      return byteArr;

      }

      //解析Json

      void parseJsonStr(QString jsonStr) {

      QJsonParseError jsonParseError;

      QJsonDocument document = QJsonDocument::fromJson(jsonStr.toUtf8(), &jsonParseError);

      if(jsonParseError.error == QJsonParseError::NoError) {

      //isObject()來判斷是否包含一個數組或對象

      if(document.isObject()) {

      QJsonObject jsonObj = document.object();

      if(jsonObj.contains("name")) {

      QJsonValue nameValue = jsonObj.take("name");

      //isXXX有7種類型: isArray、isBool、isDouble、isNull、isObject、isString、isUndefined

      if(nameValue.isString()) {

      //toXXX有7中類型toArray、toBool、toDouble、toInt、toObject、toString、toVariant

      qDebug()<<"parseJsonStr(string name): "<

      }

      }

      if(jsonObj.contains("age")) {

      QJsonValue ageValue = jsonObj.take("age");

      //isDouble(包括int、float、double等數值類型)

      if(ageValue.isDouble()) {

      qDebug()<<"parseJsonStr(int age): "<

      }

      }

      if(jsonObj.contains("man")) {

      QJsonValue manValue = jsonObj.take("man");

      //isDouble(包括int、float、double等數值類型)

      if(manValue.isBool()) {

      qDebug()<<"parseJsonStr(bool man): "<

      Qt 解析Json

      }

      }

      }

      } else {

      qDebug()<<"parseJsonStr: jsonParseError("<

      }

      }

      //生成JsonArray

      QString generateJsonArrayStr() {

      QJsonArray jsonArray;

      jsonArray.insert(0, QString("chy龍神"));

      jsonArray.insert(0, 24);

      jsonArray.insert(2, true);

      QJsonDocument document;

      document.setArray(jsonArray);

      QByteArray byteArray = document.toJson(QJsonDocument::Compact);

      QString jsonArrayStr(byteArray);

      qDebug()<<"generateJsonArrayStr: "<

      return jsonArrayStr;

      }

      //解析JsonArray

      void parseJsonArrayStr(QString jsonArrayStr) {

      QJsonParseError jsonParseError;

      QJsonDocument document = document.fromJson(jsonArrayStr.toUtf8(), &jsonParseError);

      if(jsonParseError.error == QJsonParseError::NoError) {

      if(document.isArray()) {

      QJsonArray jsonArray = document.array();

      QString str;

      for(int i=0;i

      QJsonValue value = jsonArray.at(i);

      //注意:這里只有是string類型的才能用toSring輸出,如果其他類型用toString會輸出空串

      if(value.isString()) {

      str.append(value.toString());

      } else if(value.isDouble()) {

      str.append(QString::number(value.toDouble()));

      } else if(value.isBool()) {

      str.append(value.toBool());

      }

      str.append(", ");

      }

      qDebug()<<"parseJsonArrayStr: "<

      }

      } else {

      qDebug()<<"parseJsonArrayStr: jsonParseError("<

      }

      }

      int main(int argc, char *argv[])

      {

      QString jsonStr = generateJsonStr();

      parseJsonStr(jsonStr);

      QString jsonArrayStr = generateJsonArrayStr();

      parseJsonArrayStr(jsonArrayStr);

      return 0;

      }

      JSON Qt

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格分類下拉列表的制作過程
      下一篇:如何在Excel中制作對角線標題 以及如何制作單行標題和多行標題?
      相關文章
      亚洲精品无码久久久久APP| 亚洲精品无码专区2| 亚洲 无码 在线 专区| 亚洲日韩国产一区二区三区在线| 亚洲最大在线观看| 亚洲资源在线观看| 亚洲AV无码一区二区三区DV| 亚洲国产精品无码av| 国产v亚洲v天堂无码网站| 夜夜春亚洲嫩草影院| 亚洲日韩精品A∨片无码| 亚洲无线码一区二区三区| 亚洲综合色自拍一区| 亚洲日产韩国一二三四区| 在线观看国产区亚洲一区成人| 精品亚洲成α人无码成α在线观看| 中文字幕亚洲日韩无线码| 亚洲精品夜夜夜妓女网| 亚洲av午夜福利精品一区| 亚洲国产综合精品中文第一区| 亚洲人成网www| 在线观看亚洲人成网站| 亚洲欧洲自拍拍偷综合| 亚洲一级视频在线观看| 亚洲综合色一区二区三区| 亚洲精品国产精品| 日韩亚洲精品福利| 久久精品国产精品亚洲艾草网美妙| 国产亚洲午夜高清国产拍精品| 亚洲va国产va天堂va久久| 亚洲视频在线观看一区| 亚洲欧洲视频在线观看| 久久亚洲国产成人影院| 亚洲成a∨人片在无码2023| 无码亚洲成a人在线观看| 亚洲国产小视频精品久久久三级| 国产国拍亚洲精品福利| 亚洲va久久久噜噜噜久久男同 | 亚洲国产综合精品中文字幕| 久久久久亚洲精品男人的天堂| 人人狠狠综合久久亚洲88|