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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器

    安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器一直以来就有一种想法,就是自己写一个APP将安卓手机模拟成鼠标/键盘,应急的时候可以用来代替鼠标/键盘。之前也在国内外的网站上找了各种方案,但是这些方案不是很好,直到谷歌发布的API28后终于有了很好的解决方案。为了实现这个想法也走了不少弯路,也许方法不对吧,但看到最终完美运行的APP,心中还是很有成就感的。经测试装了此APP的手机能与几乎所有安卓手机、WIN10笔记本电脑连接并操作,苹果设备需要………

    2022年10月22日
    0
  • u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程

    u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程U盘越狱iPhone绕ID最新教程及各种坑解决,吐血之作(超详细超简单教程)-balenaEtcher-Checkm8-bootra1n这是安装多个苹果版本及虚拟机版本后成功的教程,由于资源上传到百度云盘下载只有几十KB,所以为了大家能够尽快的体验上苹果系统,文章中涉及的所有工具请大家加QQ群进行交流下载:1064543120一、工具下载准备一台Windows系统电脑准备一个>2G存储U盘下载群文件中balenaEtcher、Checkm8.info_iCloudBypass、bootr

    2022年9月17日
    0
  • pycharm社区版和专业版的区别

    pycharm社区版和专业版的区别pycharm产品主页:https://www.jetbrains.com/pycharm/

    2022年8月26日
    3
  • python微信自动群发脚本_python 微信批量发送消息脚本

    python微信自动群发脚本_python 微信批量发送消息脚本通过python利用微信公众号,批量发送消息但是,因为免费的,一天一个用户,只能发90条消息。。。可以用于zabbix啊,。等监控#!/usr/bin/envpython#-*-coding:utf-8-*-importurllib2importsysimportsimplejsonasjsonreload(sys)sys.setdefaultencoding(“utf-8…

    2022年6月4日
    102
  • Mysql慢查询_mysql并发查询慢

    Mysql慢查询_mysql并发查询慢慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数…

    2022年10月9日
    0
  • java caller_callee和caller属性的区别[通俗易懂]

    java caller_callee和caller属性的区别[通俗易懂]在函数内部,有两个特殊的对象:arguments和this。arguments是一个类数组对象,用于存放传入函数中的所有参数。callee是arguments对象的属性,caller是所有函数对象的属性。calleecallee是一个指针,指向拥有当前arguments对象的函数,即返回正在执行的函数本身的引用。使用callee时要注意:1这个属性只有在函数执行时才有效2它有一个length…

    2022年10月29日
    0

发表回复

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

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