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

网站后台管理系统域名新媒体运营哪个培训机构好

网站后台管理系统域名,新媒体运营哪个培训机构好,胶州网站开发,南京旅游网页设计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/wzjs/153285.html

相关文章:

  • 日本男女直接做的视频网站b2b关键词排名工具
  • wordpress新浪图床快速seo关键词优化方案
  • 在线免费设计logoseo是啥软件
  • 歪歪小站 wordpress怎么做个网站
  • 深圳燃气公司电话客服电话号码长沙网址seo
  • 网站服务搜索排名优化公司
  • 做暖暖免费网站网站免费高清素材软件
  • 小程序优点成都百度seo推广
  • 在线做数据图的网站建站平台哪个比较权威
  • 日照网站建设淘宝seo排名优化软件
  • 哪里网站建设联系方式北京网络营销公司排名
  • 网站建设推广优化公司优化大师安卓版
  • 企业网站报价表seo是一种利用搜索引擎的
  • 网站备案信息可以改吗b2b平台推广网站
  • 北京网站建设设计软文自助发布平台系统
  • 网站建设歺金手指排名13推广拉新app哪几个靠谱
  • 徐州铜山区百度人工优化
  • 英文网站制作 官网外贸seo是啥
  • 做芯片代理哪个网站推广万能浏览器
  • 中山市网站建设 中企动力免费做网站
  • 微信建设网站购买链接平台
  • 微信app网站拼多多标题关键词优化方法
  • wordpress产品网站seo专员很难吗
  • wordpress取消httpsseo站长常用工具
  • 白云区网站开发公司电话电商运营主要负责什么
  • 建筑招聘最好的网站seo软件全套
  • 网站加背景音乐国内最新新闻大事
  • 教育局网站建设网站seo优化心得
  • 天津网站建设zmweb高端营销型网站制作
  • 代做课件的网站网站推广及seo方案