Qt写入Json文件的方法详解(含源码+注释)

目录
  • 一、示例Json文件内容
  • 二、Json写入会使用的类(介绍写入所使用的类在本文中的作用,个人理解)
  • 三、Json文件的写入
    • 3.1 常规类型的写入
    • 3.2 对象及数组类型的添加
    • 3.3 Json串写入文件
  • 总结

一、示例Json文件内容

下方为本文所使用的Json文件的内容,其中包含字符串、数值、布尔、null、对象、数组等(写入方式在本文第三节)

{
    "array": [
        "str",
        88,
        null
    ],
    "bool": true,
    "jChildObj": {
        "age": 25,
        "name": "tom"
    },
    "null": null,
    "number": 66,
    "str": "String"
}

二、Json写入会使用的类(介绍写入所使用的类在本文中的作用,个人理解)

  • QJsonDocument:使用其提供的toJson函数获取json串
  • QJsonObject:创建用于存储所有类型的根对象,和创建对象类型的变量
  • QJsonArray:用于创建数组变量,并存放数组数据

三、Json文件的写入

3.1 常规类型的写入

创建根对象(QJsonObject)

	//创建QJsonObject对象(姑且称之为根对象),用于存放需要写入的数据
    QJsonObject jObj;

常规对象的添加

	//添加字符串类型
    jObj.insert("str", "String");

    //添加数值类型(在值为具体值时其中的QJsonValue可以不使用,直接放入值本身)
    jObj.insert("number", QJsonValue(66));

    //添加布尔类型
    jObj.insert("bool", true);

    //添加空值(直接放一个QJsonValue对象即可,不传入值时默认为空)
    jObj.insert("null", QJsonValue());

3.2 对象及数组类型的添加

对象类型

	//对象类型需要一个子QJsonObject对象存放,然后在添加到根QJsonObject对象中
    QJsonObject jChildObj;
    //添加值时直接使用如上方法添加具体值即可
    jChildObj.insert("name", "tom");
    jChildObj.insert("age", 25);

    //当子对象的值添加完成后将子对象添加到根对象中即可
    jObj.insert("jChildObj", jChildObj);

数组类型

	//创建数组对象
    QJsonArray array;
    //QJsonArray容器和普通容器的添加方法一样,都可调用append函数
    array.append("str");
    array.append(88);
    array.append(QJsonValue());
    //数组中元素添加完成后将其添加到根对象中
    jObj.insert("array", array);

3.3 Json串写入文件

    //创建QJsonDocument对象并将根对象传入
    QJsonDocument jDoc(jObj);
    //打开存放json串的文件
    QFile file("./jsonTest2.json");
    if(!file.open(QIODevice::WriteOnly))
        return 0;
    //使用QJsonDocument的toJson方法获取json串并保存到数组
    QByteArray data(jDoc.toJson());
    //将json串写入文件
    file.write(data);
    file.close();

总结

建议学习前先了解一下Json文件格式,组合类型只需将需要的类型添加到存放的类型中即可

到此这篇关于Qt写入Json文件的文章就介绍到这了,更多相关Qt写入Json文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

相关文章

  • Qt读Json文件(含源码+注释)
  • Qt读写ini文件(含源码+注释)
  • Qt读写XML文件(含源码+注释)
(0)

相关推荐

  • Qt中JSON操作的具体使用

    目录 QJsonValue QJsonObject QJsonArray QJsonDocument JSON(JavaScript Object Notation,js对象标记)是一种轻量级的数据交换格式.它基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的的层次结构使得JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率.关于JSON的更多解释,请参看JSON官网. 在Qt库中,为JSON的相关操

  • C/C++ QT实现解析JSON文件的示例代码

    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,Qt库为JSON的相关操作提供了完整的类支持. 创建一个解析文件,命名为config.json我们将通过代码依次解析这个JSON文件中的每一个参数,具体解析代码如下: { "blog": "https://www.cnblogs.com/lyshark", "enable&qu

  • C++ qt 使用jsoncpp json 读写操作

    JsonCpp的使用 项目需要c++下使用json,我选择了JsonCpp,官网是:https://github.com/open-source-parsers/jsoncpp. 解压后使用python编译出两个h文件和一个cpp文件: (电脑需要安装python自己百度安装,这里就不说了) 安装python后,打开windows下cmd窗口,进入到jsoncpp文件夹  如图: 执行命令:python amalgamate.py 就会生成dist文件夹 里面有 json.h json-forw

  • C/C++ Qt 运用JSON解析库的实例代码

    JSON是一种简单的轻量级数据交换格式,Qt库为JSON的相关操作提供了完整的类支持,使用JSON解析文件之前需要先通过TextStream流将文件读入到字符串变量内,然后再通过QJsonDocument等库对该JSON格式进行解析,以提取出我们所需字段. 首先创建一个解析文件,命名为config.json我们将通过代码依次解析这个JSON文件中的每一个参数,具体解析代码如下: { "blog": "https://www.cnblogs.com/lyshark",

  • Qt利用QJson实现解析数组的示例详解

    目录 前言 第一步:进行数据转换 第二步:将字符串转成QJsonDocument格式 第三步:解析json数据 前言 现在有这样一个json结构,需要使用QJson来解析,结构如下: "code": "0001", "descrip": "文本描述1详细描述", "id": "1", "title": "文本1标题", "type&quo

  • Qt写入Json文件的方法详解(含源码+注释)

    目录 一.示例Json文件内容 二.Json写入会使用的类(介绍写入所使用的类在本文中的作用,个人理解) 三.Json文件的写入 3.1 常规类型的写入 3.2 对象及数组类型的添加 3.3 Json串写入文件 总结 一.示例Json文件内容 下方为本文所使用的Json文件的内容,其中包含字符串.数值.布尔.null.对象.数组等(写入方式在本文第三节) { "array": [ "str", 88, null ], "bool": true,

  • Qt读写ini文件的方法详解(含源码+注释)

    目录 一.示例Ini文件内容 二.Ini文件的写入 三.Ini文件的读取 3.1 第一种读取方式 3.2 第二种读取方式 3.3 读取结果示例 补充:获取所有节点和key以及节点的遍历 相关文章 总结 一.示例Ini文件内容 下方为本文所使用的ini文件的内容 [group1] key1=val1 key2=val2 sameKay=sameVal [group2] jian1=zhi1 jian2=zhi2 sameKay=sameZhi 二.Ini文件的写入 ini文件不需要像xml和jso

  • android编程之XML文件解析方法详解(附源码)

    本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8

  • Java实现将类数据逐行写入CSV文件的方法详解

    目录 1. 需求和思路 2. 现有方法 3. 代码 4. 参考 1. 需求和思路 最近要用java制作一个数据集,每一行是一个样本,格式是csv.用了一下java类的相关概念,把csv文件里的每一行,即每一个样本视为一个类. 2. 现有方法 目前已有的csv包如opencsv,可以支持字符串,也可以支持javabean(即java类).相关教程如下 Java OpenCSV|极客教程 由于墙的原因,我maven老是下载不到opencsv的jar包,没办法我只能手写个平民版的 3. 代码 自定义的

  • javascript ES6中set集合、map集合使用方法详解与源码实例

    set与map理解 ES6中新增,set集合和map集合就是一种数据的存储结构(在ES6之前数据存储结构只有array,object),不同的场景使用不同的集合去存储数据 set集合 Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用. set集合语法: //创建一个set集合,传参为一个可迭代的对象 const s1 = new Set(iterable); API 名称 类型 简介 Set.add() 原型方法 添加数据 Set.has() 原型方法 判断是否存在一个数据 S

  • Java SpringBoot自动装配原理详解及源码注释

    目录 一.pom.xml文件 1.父依赖 2.启动器: 二.主程序: 剖析源码注解: 三.结论: 一.pom.xml文件 1.父依赖 主要是依赖一个父项目,管理项目的资源过滤以及插件! 资源过滤已经配置好了,无需再自己配置 在pom.xml中有个父依赖:spring-boot-dependencies是SpringBoot的版本控制中心! 因为有这些版本仓库,我们在写或者引入一些springboot依赖的时候,不需要指定版本! 2.启动器: 启动器也就是Springboot的启动场景; 比如sp

  • Android编程之ICS式下拉菜单PopupWindow实现方法详解(附源码下载)

    本文实例讲述了Android编程之ICS式下拉菜单PopupWindow实现方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 右边这个就是下拉菜单啦,看见有的地方叫他 ICS式下拉菜单,哎哟,不错哦! 下面先讲一下实现原理: 这种菜单实际上就是一个弹出式的菜单,于是我们想到android PopupWindow 类,给他设置一个view 在弹出来不就OK了吗. PopupWindow 的用法也很简单 主要方法: 步骤1.new 一个实例出来,我们使用这个构造方法即可, 复制代码 代码如

  • 对pandas写入读取h5文件的方法详解

    1.引言 通过参考相关博客对hdf5格式简要介绍. hdf5在存储的是支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的. 使用压缩可以提磁盘利用率,节省空间. 开启压缩也没有什么劣势,只会慢一点点. 压缩在小数据量的时候优势不明显,数据量大了才有优势. 同时发现hdf读取文件的时候只能是一次写,写的时候可以append,可以put,但是写完成了之后关闭文件,就不能再写了, 会覆盖. 另外,为什么单独说pandas,主要因为本人目前对于h5py这个包的理解不是很深入,不

  • C++ OpenCV读写XML或YAML文件的方法详解

    目录 前言 1.如何使用 1.1第一步:XML.YAML文件的打开 1.2 第二步:进行文件读写操作 1.3 第三步:vector(array)和map的输入和输出 1.4 第四步:文件关闭 2.代码展示 2.1 写文件 2.2 读文件 2.3 完整的示例代码 前言 本节我们将认识XML和YAML这两种文件类型. 所谓XML,即eXtensible Markup Language,翻译成中文为“可扩展标识语言”.首先,XML是一种元标记语言.所谓元标记,就是开发者可以根据自身需要定义自己的标记,

  • python为QT程序添加图标的方法详解

    Qt是一种基于C++的跨平台图形用户界面应用程序开发框架.如何跨平台?上到服务器上位机,下到嵌入式GUI,上天入地无所不能.Qt最早是由1991年由Qt Company开发,但是到2008年,Qt Company科技被诺基亚公司收购,是的,就是拥有着我们很多情怀的诺基亚.但在2012年,Qt又被Digia收购.等到了2014年,跨平台集成开发环境Qt Creator 3.1.0正式发布出来,至此,全面支持iOS.Android.WP,QT的时代开始逐步展开. 本文重点给大家介绍python为QT

随机推荐