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

QT-JSON

#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QFile>#include <QDebug>void createJsonFile() {// 创建一个JSON对象  键值对QJsonObject jsonObj;jsonObj["name"] = "John Doe";jsonObj["age"] = 30;jsonObj["email"] = "john.doe@example.com";// 创建一个JSON数组QJsonArray jsonArr;jsonArr.append("C++");jsonArr.append("Python");
jsonArr.append("JavaScript");jsonArr.append(123);// 将数组添加到JSON对象
jsonObj["languages"] = jsonArr;// 将JSON对象转换为JSON文档
QJsonDocument jsonDoc(jsonObj);// 将JSON文档转换为字符串(也可以是压缩格式)
QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Indented);// 将JSON数据写入文件
QFile file("output.json");if (!file.open(QIODevice::WriteOnly)) {qDebug() << "Failed to open file for writing";return;}file.write(jsonData);file.close();}qDebug() << "JSON data saved to output.json";int main() {createJsonFile();return 0;}

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonArray>#include <QJsonDocument>#include <QJsonObject>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{}ui->setupUi(this);QJsonObject rootObj;rootObj["cityid"]  = "1010100";rootObj["date"]    
= "2024-01-23";rootObj["weather"] = "雨夹雪";rootObj["tmp"]     
= 3;QJsonArray jsonArray;jsonArray.append("data1");jsonArray.append("data2");jsonArray.append("data3");jsonArray.append(100);rootObj["testArry"] = jsonArray;QJsonDocument jsonDoc(rootObj);QByteArray jsonArry = jsonDoc.toJson();QFile file("D:/QT/test.json");file.open(QIODevice::WriteOnly);file.write(jsonArry);file.close();Widget::~Widget(){delete ui;}

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonArray>#include <QJsonDocument>#include <QJsonObject>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);QJsonObject rootObj;rootObj["cityid"]  = "1010100";rootObj["date"]    
= "2024-01-23";rootObj["weather"] = "雨夹雪";
= 3;rootObj["tmp"]     
//Json数组
QJsonArray jsonArray;jsonArray.append("data1");jsonArray.append("data2");jsonArray.append("data3");jsonArray.append(100);rootObj["testArry"] = jsonArray;QJsonObject alarmObj;alarmObj["alamType"] = "雪灾";alarmObj["alamLeve"] = "黄色";alarmObj["alamTitle"] = "福州市警告老陈多穿点衣服";rootObj["alam"] = alarmObj;QJsonObject day0;day0["day"] = "星期一";day0["wea"] = "晴";day0["tem"] = 5.7;QJsonObject day1;day1["day"] = "星期二";day1["wea"] = "晴";day1["tem"] = 7;QJsonObject day2;day2["day"] = "星期三";day2["wea"] = "多云";day2["tem"] = 17;QJsonArray dayArray;dayArray.append(day0);dayArray.append(day1);dayArray.append(day2);rootObj["days"] = dayArray;//通过QJsonDocument把JSON数据转换成QByteArrayQJsonDocument jsonDoc(rootObj);QByteArray jsonArry = jsonDoc.toJson();QFile file("D:/QT/test.json");file.open(QIODevice::WriteOnly);file.write(jsonArry);file.close();}Widget::~Widget(){delete ui;}

 #include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QDebug>void parseJson() {// JSON字符串/*R 是用于定义原始字符串字面量(Raw String Literal)的标记。在C++中,原始字符串字面量是一种方便的语法,用于创建包含多行文本和特殊字符的字符串,而无需转义。R"("chenlichen")"*/QString testStr = "chenli\"c";QString jsonString = R"({"name": "John Doe","age": 30,"email": "john.doe@example.com","skills": ["C++", "Python", "JavaScript"]})";/*jsonString = "{\n""    \"name\": \"John Doe\",\n""    \"age\": 30\n""}";*/// 将JSON字符串转换为QJsonDocumentQJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());// 检查JSON文档是否包含一个对象if (!jsonDoc.isNull() && jsonDoc.isObject()) {// 获取JSON对象QJsonObject jsonObj = jsonDoc.object();
// 访问对象的键值
QString name = jsonObj["name"].toString();int age = jsonObj["age"].toInt();QString email = jsonObj["email"].toString();qDebug() << "Name:" << name;qDebug() << "Age:" << age;qDebug() << "Email:" << email;}// 处理JSON数组
if (jsonObj.contains("skills") && jsonObj["skills"].isArray()) {QJsonArray skillsArray = jsonObj["skills"].toArray();for (const QJsonValue &value : skillsArray) {qDebug() << "Skill:" << value.toString();}}} else {qDebug() << "Invalid JSON...";}int main() {parseJson();return 0;}

#include <QJsonDocument>#include <QJsonObject>#include <QMap>#include <QDebug>void parseJsonToMap() {// JSON字符串
QString jsonString = R"({"name": "John Doe","age": "30","email": "john.doe@example.com"})";// 将JSON字符串转换为QJsonDocumentQJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());// 准备一个QMap来存储解析的数据
QMap<QString, QString> dataMap;// 解析JSON对象并填充QMapif (!jsonDoc.isNull() && jsonDoc.isObject()) {QJsonObject jsonObj = jsonDoc.object();for (auto key : jsonObj.keys()) {dataMap[key] = jsonObj.value(key).toString();}} else {qDebug() << "Invalid JSON...";}// 打印QMap内容
for (auto key : dataMap.keys()) {qDebug() << key << ":" << dataMap[key];}}int main() {parseJsonToMap();return 0;}

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonDocument>#include <QJsonObject>#include <QDebug>#include <QJsonArray>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//第一步:读取JSON文件保存到QByteArray中
QFile file("D:/QT/test.json");file.open(QIODevice::ReadOnly);QByteArray rawData = file.readAll();file.close();//第二步:把QByteArray转成JSONDocQJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);if( !jsonDoc.isNull() && jsonDoc.isObject()){//第三步:把JsonDoc转成JsonObjQJsonObject jsonRoot = jsonDoc.object();//第四步:如果解析普通键值对,通过“下表键”来获取值
QString strW      
= jsonRoot["weather"].toString();QString strCityId = jsonRoot["cityid"].toString();int tempretrue = jsonRoot["tmp"].toInt();qDebug() << strW;qDebug() << strCityId;qDebug() << QString::number(tempretrue);//第五步:判读是否是一个数组if(jsonRoot.contains("testArry") && jsonRoot["testArry"].isArray()){qDebug() << "array";//如果是数组,转换成JSON数组QJsonArray testArray = jsonRoot["testArry"].toArray();//遍历数组,访问每一项for(QJsonValue val : testArray){//QJsonValue的type函数返回数据类型,根据不同的数据类型处理数据// QJsonValue::Type t = val.type();switch (val.type()) {case QJsonValue::Double:qDebug() << QString::number(val.toDouble());break;case QJsonValue::String:qDebug() << val.toString();break;case QJsonValue::Object:break;}}}//第六步:判断某个键对应的值,是否是一个json对象if(jsonRoot.contains("alam") && jsonRoot["alam"].isObject()){//转成Json对象后处理QJsonObject alamObj = jsonRoot["alam"].toObject();qDebug() << alamObj["alamLeve"].toString();qDebug() << alamObj["alamTitle"].toString();qDebug() << alamObj["alamType"].toString();}if(jsonRoot.contains("days") && jsonRoot["days"].isArray()){QJsonArray dayArray = jsonRoot["days"].toArray();for(QJsonValue val : dayArray){//if(val.type() ==QJsonValue::Object ){if(val.isObject()){QJsonObject obj = val.toObject();qDebug() << obj["day"].toString();qDebug() << QString::number(obj["tem"].toDouble());qDebug() << obj["wea"].toString();}}}}}Widget::~Widget(){delete ui;}

http://www.xdnf.cn/news/751717.html

相关文章:

  • 设备驱动与文件系统:01 I/O与显示器
  • 中国高分辨率高质量地面NO2数据集(2008-2023)
  • 并发执行问题 下
  • 鸿蒙OSUniApp内存管理优化实战:从入门到精通#三方框架 #Uniapp
  • Java设计模式详解:策略模式(Strategy Pattern)
  • Azure devops 系统之五-部署ASP.NET web app
  • Flask中关于app.url_map属性的用法
  • 【MFC】初识MFC
  • 用dayjs解析时间戳,我被提了bug
  • Android的uid~package~pid的关系
  • android lifeCycleOwner生命周期
  • NodeJS全栈开发面试题讲解——P7 DevOps 与部署和跨域等
  • Linux服务器 TensorFlow找不到GPU
  • 手写ArrayList和LinkedList
  • VulnStack|红日靶场——红队评估四
  • 卫生间改造翻新怎么选产品?我在瑞尔特找到了解决方案
  • 什么是闭包
  • 4-香豆酸:CoA连接酶晶体-文献精读138
  • Kubernetes RBAC权限控制:从入门到实战
  • LLM推理相关指标
  • 【深度学习-Day 20】PyTorch入门:核心数据结构张量(Tensor)详解与操作
  • 一周学会Pandas2之Python数据处理与分析-数据重塑与透视-melt() - 融化 / 逆透视 (宽 -> 长)
  • 2.5/Q2,Charls最新文章解读
  • transformer 输入三视图线段输出长宽高 笔记
  • 大模型应用开发之预训练
  • DAY 16 numpy数组与shap深入理解
  • 【第三十八周】BLIP-2:一种高效的视觉语言预训练框架
  • 介绍一种LDPC码译码器
  • Python 爱心图案代码
  • 计算晶体结构和电子能带的软件