我是靠谱客的博主 文艺红酒,最近开发中收集的这篇文章主要介绍QT中的Json解析和生成,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

说明

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解析和生成所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部