Qt中使用Json

Qt中使用Json

Qt中使用Json需要一下几个类:

QJsonValue            代表了json格式中的一个值

QJsonObject          代表了json格式的一个对象

QJsonArray            代表了json格式中的数组

QJsonDocument    用来读写json文件

QJsonParseError   用来表示json分析过程的错误

其中QJsonValue支持6中基本的数据类型:

下面例子表示了json的创建、读取、序列化和反序列化的过程。

其中使用QJsonDocument  可以用来序列化和反序列化的过程,进而实现文件读写、socket的读写。

序列化json的函数:

QByteArray toBinaryData()   

QByteArray toJson(JsonFormat format = Indented)

反序列化:

QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate)  

QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR)  

QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate) 

QJsonDocument fromVariant(const QVariant &variant)

 

#include <QCoreApplication>
#include <QDebug>
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QJsonObject obj;
    obj.insert("name", "lily");
    obj.insert("age", 23);
    QJsonObject addr;
    addr.insert("city", "guangzhou");
    addr.insert("province", "guangdong");
    obj.insert("addr", addr);
    qDebug() << obj<<endl;

    qDebug()<<obj.value("name").toString()<<endl;

    //序列化
    QJsonDocument jsonDoc(obj);
    QByteArray ba = jsonDoc.toJson();

    //反序列化
    QJsonParseError e;
    QJsonDocument jsonDocNew = QJsonDocument::fromJson(ba, &e);

    if(e.error == QJsonParseError::NoError && !jsonDocNew.isNull())
    {
        QJsonObject getObj = jsonDocNew.object();
        qDebug() << getObj<<endl;
    }


    return a.exec();
}

  

<span>Qt中使用Json</span>

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119479.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql日期格式转换为字符串_sql server函数大全

    sql日期格式转换为字符串_sql server函数大全sqlserver日期格式与字符串转换在sqlserver数据库中,sqlserver日期时间格式转换字符串可以改变sqlserver日期和时间的格式,是每个SQL数据库用户都应该掌握的。日期时间转字符串:SelectCONVERT(varchar(100),GETDATE(),0):0516200610:57AMSelect…

    2022年10月8日
    6
  • IntelliJ IDEA全局内容搜索和替换

    IntelliJ IDEA全局内容搜索和替换在做项目时,有时会在整个项目里或指定文件夹下进行全局搜索和替换,这是一个很方便功能。使用方法如下:一、全局搜索1、使用快捷键Ctrl+Shift+F打开搜索窗口,或者通过点击Edit–>Find–>Findinpath打开搜索窗口,如下图:2、搜索界面如下,主要分为上中下三部分,上部主要为搜索条件(要搜索的内容、范围、方式等),中间部分为包含搜索内容的文件列表,点击单个文件可以在下面部分

    2022年6月25日
    52
  • 监控流媒体服务器的搭建和使用_rtmp推流服务器

    监控流媒体服务器的搭建和使用_rtmp推流服务器当我们从网络摄像头上接收视频时,首先要了解协议(RTSP/RTMP/HTTP),然后是解码格式(MKV,RMVB),之后才是将视频(H264)和音频(AAC)格式数据分别解码为图像(RGB/YUV)和声音(PCM),再根据时间戳同步到流媒体平台(比如视频直播点播平台EasyDSS)播放。本文和大家讲一下视频流媒体服务器中RTMP和RTSP区别是什么?大家都知道我们研发的不同视频流媒体服务器是接入不同协议的,国标流媒体服务器接入GB28181协议,而视频直播点播流媒体服务器就是接入RTSP和RTMP协

    2022年10月20日
    3
  • go语言切片的三种方法_病理会诊蜡块还是切片

    go语言切片的三种方法_病理会诊蜡块还是切片Go语言入门之切片的概念

    2022年4月21日
    42
  • 为什么你学不会递归?告别递归,谈谈我的经验[通俗易懂]

    为什么你学不会递归?告别递归,谈谈我的经验[通俗易懂]可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了!可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。也有好几个人来问我有没有快速掌握递归的捷径啊。说实话,哪来那么多捷径啊,不过,我还是想写一篇文章,谈谈我的一些经验,或许,能够给你带来一些帮助…

    2022年9月12日
    2
  • mysql基本命令

    mysql基本命令这里把自己学的mysql数据库的知识总结一下,当是给自己复习一遍,也是方便以后查询安装和配置mysql就不说了,可以借鉴这位博友的安装过程https://www.cnblogs.com/by330

    2022年7月3日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号