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>

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]

    【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]以下是ElasticSearch面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。评论区见关于es的面试,建议使用名词用官方语言描述会更准确。文章目录1.说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段2.elasticsearch的倒排索引是什么3.elasticsearch是如何实现master选举的5.描述一下Elasticsearch索引

  • installous下载ipa目录

    installous下载ipa目录/private/var/mobile/Documents/Installous/Downloads

  • adb工具+使用adb安装apk「建议收藏」

    adb工具+使用adb安装apk「建议收藏」adb链接:https://pan.baidu.com/s/1pdpIc9oXaqvN4lSrVLR_VA提取码:kxhc使用方法:1.解压压缩包。2.将解压后的文件夹放到合适的目录(我放到了C盘根目录)3.打开windows命令窗口,设置到adb工具目录(cdC:\adb)4.使用adb命令查看链接到的计算机的android设备(adbdevices)5.使用…

  • MySql优化

    MySql优化MySql优化

  • SQL嵌套查询_sql差集嵌套

    SQL嵌套查询_sql差集嵌套selecttop11from…主要是用来判断表是否有记录TRUNCATE:删除内容、释放空间但不删除定义,保留数据表的结构删除目标表中所有字段,不影响表结构派生表:派生表就是一个由查询结果生成的临时表。他是在外部查询的FROM中定义的。派生表的存在范围只是在外部查询中,只要外部查询结束了,派生表也就不存在了。派生表一定要写在FROM后面范围内,用()括起来。后面跟着派生表的名称。se…

  • html导航栏下拉,实现代码[通俗易懂]

    html导航栏下拉,实现代码[通俗易懂]代码如下(示例):<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″> <title></title> <styletype=”text/css”> *{padding:0px;margin:0px;box-sizing:border-box;} ul,ol{list-style-type:none;} a{text-decora

发表回复

您的电子邮箱地址不会被公开。

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