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

 更新时间:2022年10月21日 10:34:53   作者:lw只吃亿点.  
在Qt库中,为JSON的相关操作提供了完整的类支持,下面这篇文章主要给大家介绍了关于Qt写入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文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

相关文章

  • C语言do关键字的具体使用

    C语言do关键字的具体使用

    本篇文章主要介绍了C语言do关键字的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • C 语言基础教程(我的C之旅开始了)[六]

    C 语言基础教程(我的C之旅开始了)[六]

    C 语言基础教程(我的C之旅开始了)[六]...
    2007-02-02
  • C或C++报错:ld returned 1 exit status报错的原因及解决方法

    C或C++报错:ld returned 1 exit status报错的原因及解

    这篇文章主要介绍了C或C++报错:ld returned 1 exit status报错的原因及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • C++与Lua交互内存分配详解

    C++与Lua交互内存分配详解

    C/C++ 与 Lua 的交互是通过 lua_State 这一句柄进行交互,我们常规的创建都是通过 luaL_newstate 这一辅助函数,这篇文章主要给大家详细介绍了C++与Lua交互内存分配,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • 数据结构之AVL树详解

    数据结构之AVL树详解

    这篇文章主要介绍了数据结构之AVL树详解,本文非常细致的讲解了AVL树的基础知识、AVL树的旋转操作、AVL数的插入和删除操作等,需要的朋友可以参考下
    2014-08-08
  • C语言实现简单通讯录功能

    C语言实现简单通讯录功能

    这篇文章主要为大家详细介绍了C语言实现简单通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • jQuery移动页面开发中主题按钮的设计示例

    jQuery移动页面开发中主题按钮的设计示例

    这篇文章主要介绍了jQuery移动页面开发中主题按钮的设计示例,jQuery是当今最具人气的JavaScript开发类库,需要的朋友可以参考下
    2015-12-12
  • C++11 shared_ptr 与 make_shared源码剖析详解

    C++11 shared_ptr 与 make_shared源码剖析详解

    这篇文章主要介绍了C++11 shared_ptr 与 make_shared的源码剖析,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C/C++使用fmt库实现格式化字符串

    C/C++使用fmt库实现格式化字符串

    fmt库是一个高效、易用的C++格式化库,可以帮助我们方便地进行字符串格式化、输出、日志记录等操作,下面我们就来学习一下fmt格式化字符串的具体操作吧
    2023-12-12
  • C++中如何将数据保存为CSV文件

    C++中如何将数据保存为CSV文件

    这篇文章主要介绍了C++中如何将数据保存为CSV文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论