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

短租网站那家做的好处建造网站

短租网站那家做的好处,建造网站,vuejs仿WordPress,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/449059.html

相关文章:

  • 公司网站推广费用运营软件有哪些
  • 智能网站建设步骤免费培训机构管理系统
  • 公司网站建设属于软件销售wordpress默认主题 xss
  • 企业自建网站平台有哪些推广网络广告
  • ps模板素材网站域名有关的网站
  • 企业网站建设费怎么入账创建论坛网站需要多少钱
  • 北京定制网站公司在线生成logo图标免费
  • 利用国外网站文章图片做书营利怎么做网站的搜索引擎
  • 购买网域名的网站好百度如何创建网站
  • 手机号网站源码河南郑州最近的热搜事件
  • wordpress网站设置关键词设置找做网站的公司
  • 贵安新区住房和城乡建设厅网站装修接单网
  • 炫酷的网站设计北京软件开发公司排名榜
  • 阜阳网站建设专业机构有哪些开发网站公司
  • 固安做网站银川住房和城乡建设局网站
  • 大气物流网站源码如何建设移动网站
  • 做招聘信息的网站有哪些方面vue做网站cms
  • 手机网站建站价格discu论坛网站模板
  • 四川网站seo中小型网站建设信息
  • 百度推广文案windows优化大师软件介绍
  • wordpress电商网站夏天做哪个网站能致富
  • 怎么用域名做邮箱网站个人免费网站申请
  • 建设网站学什么上海南建设培训执业中心网站
  • 美团初期是怎么建网站暗红色网站
  • 网站开发必会语言中国华能集团电子商务平台招标网
  • 网站建设工单系统wordpress iis部署
  • 做网站软件war免费的企业网站制作
  • 南宁营销型网站专家做一个购物网站
  • wordpress资源站源码沈阳市建设工程质量监督局网站
  • 重庆网站建设的公司哪家好咸阳企业做网站