Qt框架之解析和构建Json格式数据-程序员不得不懂的一种数据格式。

一、json格式简介

1、概念

JSON是一种轻量级的数据交换格式,采用key-value键值对的方式来存储数据,主要用于网络通讯传输、本地配置文件等,易于人阅读和编写。

2、json中的对象和数组

对象:采用大括号{},括起来,中间的以key-value的形式存储,形如{“name”:“ISmileLi”}。
数组:采用中括号[],括起来,中间的存储数据以逗号,分割开,形如[toby,ISmileLi]。

对象和数组之间可以相互嵌套使用。

二、Qt框架对json格式的主要支持类(以下说明根据官方文档翻译整理)

1、QJsonDocument类

QJsonDocument类提供了一种读写JSON文档的方法。
QJsonDocument是一个类,它包装一个完整的JSON文档,可以从UTF-8编码的基于文本的表示以及Qt自己的二进制格式读写该文档。
可以使用QJsonDocument::from JSON()将JSON文档,从基于文本的表示形式转换为QJsonDocument,使用toJson()将其转换回文本,解析器非常快速和高效,并将JSON转换为Qt使用的二进制表示。
可以使用isNull()查询解析文档的有效性!
可以使用isArray()和isObject()查询文档是否包含数组或对象。文档中包含的数组或对象可以使用array()或object()检索,然后读取或操作。
也可以使用fromBinaryData()或fromRawData()从存储的二进制表示创建文档。

2、QJsonObject类

QJsonObject类封装了一个JSON对象。
JSON对象是键-值对的列表,其中键是唯一的字符串,值由QJsonValue表示。
QJsonObject可以与QVariantMap进行转换。它提供了size、insert、remove等方法供使用并使用标准的C++迭代器模式迭代其内容。
QJsonObject是一个隐式共享的类,只要不修改它,它就与从中创建的文档共享数据。
可以通过QJsonDocument将对象转换为基于文本的JSON或者反向转换。

3、QJsonArray类

QJsonArray类封装了一个JSON数组。
JSON数组是一个值列表。可以通过从数组中插入和删除QJsonValue来操作列表。
QJsonArray可以与QVariantList进行转换。它提供了size、insert、remove等方法供使用,并使用标准的C++迭代器模式迭代其内容。
QJsonArray是一个隐式共享的类,只要不修改它,它就可以与QJsonDocument创建的文档共享数据。
可以通过QJsonDocument将数组转换为基于文本的JSON或者反向转换。

4、QJsonValue类

QJsonValue类用JSON封装一个值。
JSON是一种存储结构化数据的格式。它有6种基本数据类型:
布尔(Bool)、双精度(Double)、字符串(String)、数组(Array)、对象(Object)、空(Null)。
值可以表示上述任何数据类型。此外,QJsonValue还有一个特殊的标志来表示未定义的值,可以使用isUndefined()查询。
可以使用type()或访问器(如isBool()、isString()等)查询值的类型。同样,可以使用toBool()、toString()等将值转换为存储在其中的类型。
值在内部是严格类型化的,与QVariant相反,它不会尝试进行任何隐式类型转换。这意味着转换为不存储在值中的类型将返回默认的构造返回值

三、Json格式的构建与解析

1、构建和解析的数据格式如下:

{
   
    "ISmileLi": [{
   
        "info": {
   
            "id": "00000000",
            "sex": "就不告诉你",
            "age": "我还很年轻"
        },
        "location": {
   
            "city": "BeiJing",
            "country": "中国"
        },
        "profession": "programmer"
    }]
}

2、构建与解析示例代码:

#include <QtCore/QCoreApplication>
#
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值