概述
目录
说明
Json解析
Json生成
说明
首先说明一下解析和生成这个Json文件需要用到Qt的哪些类:
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
看上图, 我用不同颜色的矩形线条标明了它们所在的不同层次。
Json文件你可以把它看成一层一层得包裹着数据,那我们需要解析数据的话怎么办?
解析数据的时候就得从外面一层一层得剥开,然后读取我们想要得数据
生成数据恰恰相反,从最里面一层一层得封起来。
解析的过程:
先从json文件读取数据
然后将其转换为QJsonDocument文档
然后从最外层的{}对象开始一层一层的进去获取数据
生成数据的过程:
从最里层一层一层的封装
封装到最外层{}对象以后,将其构成json文档
最后将json文档转换为QByteArray类型数据写入文件
我们有看到Json文件里由三种符号给包裹着,这三种符号分别代表什么呢?
{ } :代表的是对象,使用QJsonObject类去访问它,访问它里面的成员使用value函数访问
[ ]:代表的是数组,使用QJsonArray类去访问它,访问它里面的成员使用at函数访问
" ":代表的键值,使用QJsonValue类去访问它,你可以通过“ ”里面的字符串去访问它对应的值;
Json解析
//从Json文件读取数据
QByteArray data;
QFile file("./staffInfomation.json");
if(file.open(QIODevice::ReadOnly))
{
data = file.readAll();
}
file.close();
//转换为QJsonDocument,使用它的静态函数进行转换
QJsonDocument doc = QJsonDocument::fromJson(data);
//获取最外层的对象 " { "
QJsonObject obj= doc.object();
//得到admin的值
QString admin = obj.value("admin").toString();
qDebug()<<admin;
//得到staff数组
QJsonArray staffArray = obj.value("staff").toArray();
//获得staff数组里面三个对象
QJsonObject object0 = staffArray.at(0).toObject();
QJsonObject object1 = staffArray.at(1).toObject();
QJsonObject object2 = staffArray.at(2).toObject();
//得到三个对象里面的值
QString name0 = object0.value("name").toString(); //张三的数据
int age0 = object0.value("age").toInt();
qDebug()<<"name: " <<name0 <<"age: " <<age0;
QString name1 = object1.value("name").toString(); //李四的数据
int age1 = object1.value("age").toInt();
qDebug()<<"name: " <<name1 <<"age: " <<age1;
QString name2 = object2.value("name").toString(); //王五的数据
int age2 = object2.value("age").toInt();
qDebug()<<"name: " <<name2 <<"age: " <<age2;
Json生成
如上图,生成这个Json代码
//封装数据进object
QJsonObject obj1;
obj1.insert("name","张三");
obj1.insert("age",18);
QJsonObject obj2;
obj2.insert("name","李四");
obj2.insert("age",19);
QJsonObject obj3;
obj3.insert("name","王五");
obj3.insert("age",20);
//封装object进Array
QJsonArray array;
array.insert(0,obj1);
array.insert(1,obj2);
array.insert(2,obj3);
//封装Array进最外层的object
QJsonObject firstObject;
firstObject.insert("admin","root");
firstObject.insert("staff",array);
//构成Json文档
QJsonDocument doc;
doc.setObject(firstObject);
//将Json文档转换成QByteArray数组
QByteArray data;
data = doc.toJson();
//最后数据写入文件
QFile file("./staffInfomation.json");
if(file.open(QIODevice::WriteOnly))
{
file.write(data);
}
file.close();
最后
以上就是文艺红酒为你收集整理的QT中的Json解析和生成的全部内容,希望文章能够帮你解决QT中的Json解析和生成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复