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

短租网站那家做的好处富力海外网络推广

短租网站那家做的好处,富力海外网络推广,伍佰亿营销型网站,wordpress企业内网主题QT数据交互全解析:JSON处理与HTTP通信 目录 JSON数据格式概述QT JSON核心类JSON生成与解析实战HTTP通信实现JSONHTTP综合应用 1. JSON数据格式概述 JSON(JavaScript Object Notation)是轻量级的数据交换格式: #mermaid-svg-BZJU1Bpf5QoXgwII {font-fam…

QT数据交互全解析:JSON处理与HTTP通信


目录
  1. JSON数据格式概述
  2. QT JSON核心类
  3. JSON生成与解析实战
  4. HTTP通信实现
  5. JSON+HTTP综合应用

1. JSON数据格式概述

JSON(JavaScript Object Notation)是轻量级的数据交换格式:

JSON结构
对象
数组
键值对
值列表
字符串/数值/布尔值

基本语法规则

  • 数据为键值对 "key": value
  • 数据由逗号分隔
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组

2. QT JSON核心类

JSON处理四大核心类:
类名作用常用方法
QJsonDocumentJSON文档容器fromJson(), toJson()
QJsonObjectJSON对象(键值对集合)insert(), value()
QJsonArrayJSON数组(值的有序列表)append(), at()
QJsonValueJSON值(支持多种类型)toInt(), toString()

使用前需包含头文件:#include <QJsonDocument>


3. JSON生成与解析实战

(1) 生成JSON数据
// 创建JSON对象
QJsonObject userObj;
userObj["name"] = "张三";
userObj["age"] = 28;
userObj["isVIP"] = true;// 创建JSON数组
QJsonArray languages;
languages.append("C++");
languages.append("Python");
languages.append("Java");
userObj["languages"] = languages;// 生成JSON文档
QJsonDocument doc(userObj);
QByteArray jsonData = doc.toJson();// 输出结果
qDebug().noquote() << jsonData;

输出效果

{"name": "张三","age": 28,"isVIP": true,"languages": ["C++", "Python", "Java"]
}
(2) 解析JSON数据
// 假设收到JSON数据
QByteArray jsonData = R"({"product": "手机","price": 3999.0,"specs": ["6.7英寸", "8GB+256GB", "5000mAh"]}
)";// 解析JSON
QJsonDocument doc = QJsonDocument::fromJson(jsonData);
QJsonObject obj = doc.object();// 提取数据
QString product = obj["product"].toString();
double price = obj["price"].toDouble();
QJsonArray specsArray = obj["specs"].toArray();// 处理数组数据
QStringList specsList;
for(auto item : specsArray) {specsList << item.toString();
}qDebug() << "产品:" << product;
qDebug() << "价格:" << price;
qDebug() << "规格:" << specsList.join(", ");

解析结果

产品: "手机"
价格: 3999.0
规格: "6.7英寸, 8GB+256GB, 5000mAh"

4. HTTP通信实现

HTTP通信核心类:
QNetworkAccessManager
QObject
QNetworkRequest
QNetworkReply
GET请求示例:
// 创建网络管理器
QNetworkAccessManager *manager = new QNetworkAccessManager(this);// 配置请求
QUrl url("https://api.example.com/data");
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");// 发送GET请求
QNetworkReply *reply = manager->get(request);// 处理响应
connect(reply, &QNetworkReply::finished, [=](){if(reply->error() == QNetworkReply::NoError) {QByteArray data = reply->readAll();qDebug() << "收到响应:" << data;// 解析JSON响应QJsonDocument doc = QJsonDocument::fromJson(data);// ... 处理数据} else {qDebug() << "请求错误:" << reply->errorString();}reply->deleteLater();
});
POST请求示例:
// 准备JSON数据
QJsonObject postData;
postData["username"] = "user123";
postData["password"] = "pass456";
QJsonDocument doc(postData);
QByteArray jsonData = doc.toJson();// 发送POST请求
QNetworkRequest request(QUrl("https://api.example.com/login"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkReply *reply = manager->post(request, jsonData);

5. JSON+HTTP综合应用

天气API请求解析示例:
void WeatherApp::fetchWeather(const QString &city) {QUrl url("https://api.weather.com/v3/current");url.setQuery({{"city", city},{"key", API_KEY}});QNetworkRequest request(url);QNetworkReply *reply = manager->get(request);connect(reply, &QNetworkReply::finished, [=](){QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());QJsonObject obj = doc.object();// 解析天气数据double temp = obj["temperature"].toDouble();QString condition = obj["condition"].toString();int humidity = obj["humidity"].toInt();// 更新UI显示ui->tempLabel->setText(QString("%1°C").arg(temp));ui->conditionLabel->setText(condition);ui->humidityBar->setValue(humidity);});
}

运行效果

[天气应用界面]
┌───────────────────────┐
│ 北京天气             │
├───────────────────────┤
│ 温度: 24.5°C         │
│ 天气: 多云           │
│ 湿度: ████ 65%       │
└───────────────────────┘
错误处理机制:
connect(reply, &QNetworkReply::errorOccurred, [=](QNetworkReply::NetworkError error){qDebug() << "网络错误:" << reply->errorString();showErrorDialog("网络连接失败,请检查网络设置");
});connect(reply, &QNetworkReply::sslErrors, [=](const QList<QSslError> &errors){for(const auto &error : errors) {qDebug() << "SSL错误:" << error.errorString();}showErrorDialog("安全证书验证失败");
});

完整源码:GitHub数据交互示例
官方文档

  • QT JSON处理
  • QT网络模块

原创技术笔记,转载需注明出处。更多系统编程内容持续更新中…

http://www.dtcms.com/a/517115.html

相关文章:

  • 【C++ STL 深入解析】insert 与 emplace 的区别与联系(以 multimap 为例)
  • 文件系统LittleFS
  • day16_接口加强练习
  • 潍坊中脉网站建设公司做个网站多少钱一个月
  • PHP+Ajax网站开发典型实例3d建模自学
  • 雪崩阵列中的多域物理串扰模型
  • 注册公司网站模版怎么自己做网页
  • 四网合一的网站个人网站可以做推广吗
  • 做网站是用wordpress还是DW谷歌海外推广怎么做
  • 蛋白表达系统的技术布局与应用
  • C++11 核心新特性:从语法重构到工程化实践
  • C# 上传票据文件 调用Dify的API完成OCR识别
  • 交换机Super密码配置方法(V7
  • 做网站的实施过程足球梦网站建设的基本思路
  • 安阳市住房和城乡建设厅网站华为做网站
  • 欧普建站网页设计与网站建设全攻略
  • 怎么优化自己网站wordpress文章不显示图片
  • 网站公司建立网页设计素材哪里找
  • 网站友情链接交易平台wordpress首页模块排序权限修改
  • 下列哪一项不属于电子商务网站建设网站标题作弊详解
  • 网络故障排查三板斧:路由追踪、端口检查,快速定位网络问题
  • 一站式服务平台官网wordpress后台字体修改
  • Flink状态编程之算子状态(OperatorState)
  • 哔哩哔哩修改版 8.64.0| 去除多项冗余内容和广告,精简流畅好用
  • 如何写网站建设报告3d动画制作流程
  • 网站建设合同表(书)注册万维网网站
  • 数据结构——顺序查找
  • 辽宁网站建设哪里好找深圳网站建设 湖南岚鸿
  • 厦门最早做网站的公司阿里云服务器一年多少钱
  • 电子商城网站开发软件网站维护兼职