Qt写入Json文件(含源码+注释)

一、示例Json文件内容

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

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

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

  1. QJsonDocument:使用其提供的toJson函数获取json串
  2. QJsonObject:创建用于存储所有类型的根对象,和创建对象类型的变量
  3. 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读写ini文件(含源码+注释)
Qt读写XML文件(含源码+注释)

友情提示——哪里看不懂可私哦,让我们一起互相进步吧
(创作不易,请留下一个免费的赞叭 谢谢 ^o^/)

注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。
注:如有侵权,请联系作者删除

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lw向北.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值