c/c++语言开发共享50.Qt-QJsonDocument读写json

QJsonDocument: 提供一种读取和写入JSON文档的方法,可以通过它的的成员函数array()或object()检索文档中包含的数组或对象,然后读取JSON数据,或者修改数据。 QJsonObject: 封装了一个JSON对象, 可以使用它的成员函数size()、insert()和remo …

  • qjsondocument: 提供一种读取和写入json文档的方法,可以通过它的的成员函数array()或object()检索文档中包含的数组或对象,然后读取json数据,或者修改数据。
  • qjsonobject:  封装了一个json对象, 可以使用它的成员函数size()、insert()和remove()来对修改json数据.
  • qjsonarray:  封装了一个json数组,用来实现json数组的

1.解析json-示例

注意:json中的key命名不能相同,否则的话会覆盖掉,比如:

{      "flag": 1,      "flag": "example"  }

最终只能读取到flag的”example”值.

json文件示例内容如下:

{      "flag": 1,      "name": "example",      "arrays":      [          {              "name":       "array1",              "string":     "哈哈哒1"          },          {              "name":       "array2",              "string":     "哈哈哒2"          },          {              "name":       "array3",              "string":     "哈哈哒3"          },          {              "name":       "array4",              "string":     "哈哈哒4"          }      ]  }

程序如下:

bool parsejson()  {       //打开文件       qfile file(qapplication::applicationdirpath()+"/1.json");       if(!file.open(qiodevice::readonly)) {           qdebug() << "file open failed!";       } else {           qdebug() <<"file open successfully!";       }       qjsonparseerror *error=new qjsonparseerror;       qjsondocument jdc=qjsondocument::fromjson(file.readall(),error);         //判断文件是否完整       if(error->error!=qjsonparseerror::noerror)       {         qdebug()<<"parsejson:"<<error->errorstring();         return false;       }           qjsonobject obj = jdc.object();        //获取对象       qdebug() <<"object size:"<<obj.size();         qstringlist list =  obj.keys();       foreach (qstring key, list) {            if(obj[key].isstring())           {              qdebug()<<"key:"<<key<<"value:"<<obj[key].tostring();           }           else if(obj[key].isarray() && key =="arrays")           {               qjsonarray arr =  obj[key].toarray();               for(int i=0;i<arr.count();i++)               {                  qjsonobject arrobj= arr[i].toobject();                  qdebug()<<"key:"name""<<"value:"<<arrobj["name"].tostring();                  qdebug()<<"key:"string""<<"value:"<<arrobj["string"].tostring();               }           }       }         return true;  }

打印如下:

 50.Qt-QJsonDocument读写json

写json-示例

代码如下:

bool writejson()  {      //打开文件      qfile file(qapplication::applicationdirpath()+"/1.json");      if(!file.open(qiodevice::writeonly)) {          qdebug() << "file open failed!";      } else {          qdebug() <<"file open successfully!";      }        qjsondocument jdoc;      qjsonobject obj;      qjsonarray arr;        for(int i=1;i<5;i++)      {          qjsonobject member;     //定义数组成员          member["name"] = qstring("array%1").arg(i);          member["string"] = qstring("哈哈哒%1").arg(i);          arr.append(member);      }        obj["arrays"] = arr;      obj["name"] ="example";      obj["flag"] ="1";        jdoc.setobject(obj);      file.write(jdoc.tojson(qjsondocument::indented)); //indented:表示自动添加/n回车符      file.close();  }

文件保存如下:

 50.Qt-QJsonDocument读写json

 

 

 

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/600854.html

(0)
上一篇 2021年5月9日
下一篇 2021年5月9日

精彩推荐