当前位置: 首页 > wzjs >正文

贵阳中企动力做的网站免费网站站长查询

贵阳中企动力做的网站,免费网站站长查询,品牌建设工作的意义,360建筑网怎么注销账号1.JSON的两种数据格式 JSON有两种数据格式:JSON对象和JSON数组 JSON数组: JSON数组格式:[元素1,元素2,元素3,......元素n] JSON数组中的元素可以是同一类型,也可以使不同类型,可以嵌套JSON数组…

1.JSON的两种数据格式

JSON有两种数据格式:JSON对象和JSON数组

JSON数组:

JSON数组格式:[元素1,元素2,元素3,......元素n]

JSON数组中的元素可以是同一类型,也可以使不同类型,可以嵌套JSON数组或JSON对象

JSON对象:

JSON对象格式:{“key1:” : value1, “key2” : value2 , “key3” : value3 }

JSON对象内部使用键值对的方式来组织,键是字符串类型,值可以为多种类型,也可以为JSON数组或JSON对象

​​​​​​​1.2 JSON在线解析

JSON本质就是一种特殊格式的字符串

收到的json字符串是压缩格式,没有换行和缩进,不便于判断格式是否正确

可以通过JSON在线解析工具来校验JSON的格式是否正确

在json.cn进行查看

2.Qt中JSON的使用

Qt中提供JSON类,便于生成和解析JSON字符串

相关JSON类:

QJsonObject

QJsonArray

QJsonValue

QJsonDocument

​​​​​​​2.1 QJsonObject

QJsonObject封装了JSON中的对象,可以存储多个键值对,键为字符串类型,值为QJsonValue类型

常用方法

方法

说明

QJsonObject()

创建一个空的QJsonObject对象

bool contains(const QString&key) const

查对象中是否包含给定的键

int count() const

返回对象中包含的键值对数量,与size()函数功能相同

bool empty() const

检查对象是否为空

QJsonObject::iterator find(const QString&key)

返回一个迭代器,指向具有指定键的键值对。如果未找到,则返回end()

QJsonObject::iterator erase(QJsonObject::iterator it)

从对象中删除迭代器所指向的键值对,并返回指向下一个键值对的迭代器

JsonObject::iterator insert(const QString&key,const QJsonValue&value)

向对象中添加一个新的键值对

QJsonObject::iterator begin()

返回一个迭代器,指向对象中的第一个键值对

QJsonObject::iterator end()

返回一个迭代器,指向对象中的“尾后”位置

QJsonObject::const_iterator find(const QString&key) const

返回一个常量迭代器,指向具有指定键的键值对

例:

​​​​​​​2.2QJsonArray

QJsonArray封装了JSON中的数组,数组中元素的类型统一为QJsonValue类型

常用方法

方法

说明

append(const QJsonValue &value)

在数组末尾添加一个QJsonValue

at(int i) const

返回数组中索引为i的QJsonValue

contains(const QJsonValue &value) const

检查数组是否包含特定的QJsonValue

size() const

返回数组中的元素数量

removeAt(int i)

删除数组中索引为i的元素

takeAt(int i)

取出并删除数组中索引为i的元素

insert(int i, const QJsonValue& value)

将元素插入到指定索引处

​​​​​​​2.3QJsonValue

QJsonValue封装了JSON支持的六种数据类型:

Bool  ,Double,  String,  QJSonArray,  QJSonObject,  Null

获取到QJsonValue对象后,可以通过判断函数来确定其封装的类型

方法

bool isString() const;

bool isDouble() const;

bool isBool() const;

bool isObject() const;          ---QJsonObject    

bool isArray() const;           ---QJsonArray

bool isUndefined() const;      ---是否为未识别的类

bool isNull() ocnst;

获取到QJsonValue封装的类型后,可以通过函数进行转换

方法

QString toString() const;

QString toString(const QString &defaultValue) const;

double todouble(double defaultValue=0) const;

int toInt(int defaultValue=0) const;

bool toBool(bool defaultValue=false) const;

QJsonObject toObject(const QJsonObject &defaultValue) const;

QJsonObject toObject() const;

QJsonArray toArray(const QJsonArray &defaultValue) cosnt;

QJsonArray toArray() const;

​​​​​​​2.4QJsonDocument

QJsonDocument封装了一个完整的JSON文档

可以从UTF-8编码基于文本的表示,以及Qt本身的二进制格式读取和写入该文档

QJsonObject和QJsonArray这两种对象是不能直接转换为字符串类型的,需要通过QJsonDocument类来完成二者的转换

构建json字符串方法:

将得到的QJsonObject/QJsonArray转换成字符串

//1.以QJsonObject/QJsonArray为参数创建QJsonDocument对象

QJsonDocument ::QJsonDocument(const QJsonObject &object);

QJsonDocument ::QJsonDocument(const QJsonArray &array);

//2.对QJsonDocument对象中的数据进行序列化,转化成json字符串

QByteArray QJsonDocument::toBinaryData() const;  ---二进制格式

QByteArray QJsonDocument::toJson(JsonFormat format=Indented) const;   ---文本格式

解析json字符串方法

将得到的JSON格式的字符串转化成其封装的对应类型的数据

//1,将JSON字符串---二进制格式或字符串格式转换成QJsonDocument对象

QJsonDocument::formBinaryData(const QByteArray &data,DataValidation validation=Validate);

QJsonDocument::formJson(const QByteArray &json,QJsonParseError *error=Q_NULLPTR);

//2.将QJsonDocument对象转换成json数组/对象

//先判断为json数组还是json对象

bool QJsonDocument::isArray() const;

bool QJsonDocument::isObject() const;

//再转化

QJsonObject QJsonDocument::object() const;

QJsonArray QJsonDocument::array() const;

//3.再通过QJsonArray/QJsonObject的相关方法判断其存储类型,将数据转换为对应类型

例如:

构建JSON字符串---用于向服务端发送消息

创建一个基类为QWidget的文件,在头文件类中声明构建json字符串的函数

在widget构造函数中调用writeJson

转到定义

运行后输出json字符串

格式化输出:

toUtf8()
        将 QString 转换为 QByteArray(UTF-8 编码的字节流),此时字符串中的换行符(\n)和缩进(空格)会被保留。

data()
        返回 QByteArray 的 const char* 指针,qDebug() 会将其视为普通 C 字符串处理,直接按原始内容输出,包括换行和缩进。

将JSON字符串写入文件

解析JSON字符串---用于接收收到的json字符串

在widget.h的类中声明解析json字符串的函数

在widget构造函数中调用

实现readJson函数

​​​​​​​


文章转载自:

http://uA8xzbxz.thhrf.cn
http://DCkn1a1D.thhrf.cn
http://RJXDHRrz.thhrf.cn
http://N69OkC0T.thhrf.cn
http://mFFNv6rv.thhrf.cn
http://K3lhpLeO.thhrf.cn
http://2vovyqlQ.thhrf.cn
http://t4kRXx7a.thhrf.cn
http://GevS5ape.thhrf.cn
http://xVc8VWMF.thhrf.cn
http://Veteb8nT.thhrf.cn
http://k04rD3Dt.thhrf.cn
http://IiGx4wny.thhrf.cn
http://EMW39fqb.thhrf.cn
http://Vl36ZVCy.thhrf.cn
http://GMmEW0Ym.thhrf.cn
http://GO3wQm2t.thhrf.cn
http://pFoSU8Jf.thhrf.cn
http://vPx43jzd.thhrf.cn
http://WrPdNCaH.thhrf.cn
http://SVHQ9XuF.thhrf.cn
http://LAYR3vHt.thhrf.cn
http://J3gyY0E8.thhrf.cn
http://C2xgtcHh.thhrf.cn
http://OwRJxgSU.thhrf.cn
http://lEcHDZcq.thhrf.cn
http://DyxQr47g.thhrf.cn
http://rmrdx9Wz.thhrf.cn
http://AnqtSZHr.thhrf.cn
http://AeTxD53E.thhrf.cn
http://www.dtcms.com/wzjs/626431.html

相关文章:

  • 怎么做多语言网站尚品宅配装修公司官网
  • 怎样为网站做推广wordpress 照片墙
  • 建设厅网站企业诚信分值加工制造网
  • 雅昌网站做古董交易aso优化什么意思是
  • 网站建设推广平台网络营销服务的特点有哪些
  • 墨星写作网站app下载软件开发的几个阶段
  • 外贸网站建设需要什么电子商务网站建设的规划书
  • 广州佛山网站建设地址株洲网站建设 英铭
  • ico网站图标网站推广码怎么做
  • 家居网站建设全网营销庄浪县门户网
  • 网站设计酷站东台网站网站建设
  • 可信赖的深圳网站建设设计免费
  • 郑州好的企业网站建设crm销售
  • 汽车网站建设工作室南充房产
  • 做问卷的网站生成二维码视觉设计图
  • 中南建设集团招标网站亚马逊做deal的网站
  • 网站综合营销方案设计东莞网站推广公司
  • 在线网站备案建设工程质量安全管理体系网站
  • 网站模版 下载工具苏州定制型网站建设
  • 掌握cms建设网站实训报告永久免费crm软件哪个好
  • 易讯网络网站建设网站建设安全问题
  • 企业网站模板 首页大图怎么用手机做抖音上最火的表白网站
  • 主流的网站开发工具做调查问卷哪个网站好
  • 石家庄电子商务网站建设成都广告公司有哪些
  • 贵阳网站建设怎么样域名备案码
  • 北京有一个公司打电话做网站认证东莞网站建设五金建材
  • 苏州建网站的公司外包服务开发一款手机app的步骤
  • 三明交通建设集团网站中山快速做网站公司
  • 海市科技网站建设湖南长沙房价2022最新价格
  • 投资担保网站建设浙江三建建设集团有限公司网站