qt json入门

本文从零开始介绍JSON的基础知识及其在Qt中的应用。详细解释了如何使用QJsonDocument、QJsonObject和QJsonArray等类进行JSON数据的读取与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qt json入门

前言:和上一篇的qt socket一样都是0基础开始,纯小白,下面是自己在学习json中总结出来的东西
json是什么?
在与服务端的数据传输中,通常一次传输一串数据,可能有图片,数组,类等等,为了在数据流中区分这些东西,我们需要一种通用格式来记录一次数据传输到底传了什么.json就是这样的一种数据格式
json基础知识
json内的数据由值和它的名称组成,名称应该用""框住(不是必须),名称被称为键,中间加以冒号,这样的数据被称为键值对,即
"name":value
数据之间用,隔开,如果一个数据的值为字符串,则应该用""引起来,如果一个数据的值是数组,那么就应该用[]框住,如果值是对象,则应该使用{}框住.整个json类型的数据最外围也应该用{}框住
实例:
{
	"number": 1,
	"char_array": "i am char_array",
	"bool": true,
    "null": null,
	"array": [1, 2, {
		"num": 3
	}],
	"object": {
		"number": 2,
		"char_array": "i am in a class"
	}
}
https://www.bejson.com/这个网站可以查看自己的json格式是否正确
其实整个json文件就是一个大的对象,而内部又可以包含许多小对象,而小对象里的数据也要符合上面的规则,对象可以在数组里面,但是必须要用{}标注
在qt内部的json数值读取
qt提供了QJsonDocument类用于读取json数值
QJsonDocument由QJsonObject类(对象)和QJsonArray类(数组)组成
基本用法
QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR);//用于生成json
QByteArray QJsonDocument::toJson(JsonFormat format = Indented) const;//用于解析json
setArray(const QJsonArray &array);//设置一个数组
setObject(const QJsonObject &object);//设置一个对象
array() const;//返回其设置的QJsonArray类
object() const;//返回其设置的QJsonObject类
QJsonObject用于处理键值对,可以添加多个键值对组成一个对象
基本用法
insert(const QString &key, const QJsonValue &value);//第一个参数为键,第二个参数为值
contains(const QString &key) const;//判断是否含有某个键值对
value(const QString &key) const;//返回键对应的值
take(const QString &key);//移除键对应的值
QJsonArray用于处理数组
append(const QJsonValue &value);//数组增加一个元素
可以注意到上面的参数中都有一个QJsonValue类,QJsonValue用于qt能够接受的数值类型与json类型数值的转化,也就是说可以通过构造函数生成QJsonValue类型的数据

QJsonValue(bool b)
QJsonValue(double n)
QJsonValue(int n)
QJsonValue(qint64 n)
QJsonValue(const QString &s)
QJsonValue(QLatin1String s)
QJsonValue(const char *s)
//支持的构造函数
也可以将其转化为我们需要的数据类型,甚至是QJsonObject 和QJsonArray类型
toArray(const QJsonArray &defaultValue) const
toArray() const
toBool(bool defaultValue = false) const
toDouble(double defaultValue = 0) const
toInt(int defaultValue = 0) const
toObject(const QJsonObject &defaultValue) const
toObject() const
toString() const
toString(const QString &defaultValue) const
toVariant() const
或者判断是哪种类型
isArray() const
isBool() const
isDouble() const
isNull() const
isObject() const
isString() const
isUndefined() const//用于解析json数据的类型,因为传输过程中键值对的顺序不做保证,但是数组内部的顺序除外
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值