QT Qstring转QJson转QbyteArray

QT5.15 QT Qstring转QJson

//读取json格式文件

 // QByteArray json = http_recv_str.toLatin1();//字符串转字节
    QByteArray json = http_recv_str.toUtf8().data(); //信息带中文,则需要toUtf8()
    //QByteArray json = http_recv_str.toLocal8Bit().data();//信息不带中文,toLocal8Bit

bool Dialog_Debug::QString2QJson(QString msg)
{http_recv_str= msg;// 读取文本中的 JSON 数据QString Current_Path = QDir::currentPath();//Current_Path = Current_Path+"/debug/config/test.json";  //读取json格式文件// QFile file(Current_Path);// file.open(QFile::ReadOnly);//QByteArray json = file.readAll();// file.close();// QByteArray json = http_recv_str.toLatin1();//字符串转字节QByteArray json = http_recv_str.toUtf8().data(); //信息带中文,则需要toUtf8()//QByteArray json = http_recv_str.toLocal8Bit().data();//信息不带中文,toLocal8Bit// 将 JSON 数据转换为 QJsonDocument 对象QJsonDocument doc = QJsonDocument::fromJson(json);if(!doc.isObject()){// 不是 JSON 对象:JSON 字符串格式错误或无效qDebug()<<"不是 JSON 对象:JSON 字符串格式错误或无效";return false;}// 将 QJsonDocument 对象中的 JSON 数据转换为 JSON 对象QJsonObject obj = doc.object();// 获取 JSON 数据中的所有键QStringList keys = obj.keys();// 遍历键值对for (int i = 0;i<keys.size();++i){// 获取每一个 keyQString key = keys[i];// 通过 key 获取对应的 valueQJsonValue value = obj.value(key);if(value.isBool()){// 值是一个 boolqDebug()<<key<<":"<<value.toBool();}else if(value.isString()){// 值是一个字符串qDebug()<<key<<":"<<value.toString();}else if(value.isDouble()){// 值是一个 double 或者 int(double 和 int 都用 isDouble)qDebug()<<key<<":"<<value.toInt();}else if(value.isObject()){// 值是一个 JSON 对象qDebug()<<key<<":";//直接通过已知的键去获取值QJsonObject lotInfoObj = value.toObject();QString waferxxSource = lotInfoObj["waferSxxxource"].toString();QString lot_dexxvice = lotInfoObj["partNxxxame"].toString();QString lot_paxxckage = lotInfoObj["pacxxxkage"].toString();QString lot_stxxep_name = lotInfoObj["stepxxName"].toString();QString lot_stxxate = lotInfoObj["state"].toString();QString lot_rewxxork_value = lotInfoObj["Resexxxrved17"].toString();qDebug()<<"  "<<"waferSxxource:"<<waferxxSource;qDebug()<<"  "<<"lot_dxxevice:"<<lot_xxdevice;ui->lineEdit_xxwafer_source->setText(waferSxxource);ui->lineEdit_xxdevice->setText(lot_dxxevice);ui->lineEdit_xxpackage->setText(lot_xxpackage);ui->lineEdit_xxstep_name->setText(lot_sxxtep_name);ui->lineEdit_xxstate->setText(lot_sxxtate);ui->lineEdit_xxrework->setText(lot_reworkxx_value);QString main_qty_str = lotInfoObj["maxxinQty"].toString();QString reelxxSize = lotInfoObj["reexxlSize"].toString();int temp_calc = main_qxxty_str.toInt();temp_calc = temp_calc/reelxxSize.toInt();ui->lineEdit_reels_total_qty->setText(QString::number(temp_calc));}/***string mainQty = jsonStr["data"]["mainQtyxx"];string reelSize = jsonStr["data"]["reelSizexx"];int temp_calc = Convert.ToInt32(mainQty) / Convert.ToInt32(reelSizexx);reel_total_qty = temp_calc.ToString();** */else if (value.isArray()){// 值是一个 JSON 数组qDebug()<<key<<":";QJsonArray phoneArray = value.toArray();for (int i = 0;i<phoneArray.size();++i){// 遍历 JSON 数组中的每一个 JSON 对象QJsonObject phoneObj = phoneArray[i].toObject();QString waferSourcexx = phoneObj["waferSourcexx"].toString();QString lot_devicexx = phoneObj["lot_devicexx"].toString();qDebug()<<"  "<<"number:"<<waferSourcexx;qDebug()<<"  "<<"type:"<<lot_devicexx;}}}
}

// 构建 JSON 对象
QJsonObject json;
json.insert("Name", "Qt");
json.insert("From", 1991);
json.insert("Cross Platform", true);// 构建 JSON 文档
QJsonDocument document;
document.setObject(json);
QByteArray byteArray = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray);qDebug() << strJson;
————————————————

QJson转QString。该转换不会产生换行符 

QString MainWindow::JsonToQstring(QJsonObject jsonObject)
{QJsonDocument document;document.setObject(jsonObject);QByteArray simpbyte_array = document.toJson(QJsonDocument::Compact);QString simpjson_str(simpbyte_array);return simpjson_str;
}

// QString转QByteArray方法


QString str("hello");
QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1QString str("hello");
QByteArray bytes = str.toLatin1(); // QString转QByteArray方法2

 //QByteArray转QString方法

//Qt5.3.2
QByteArray bytes("hello world");
QString string = bytes; // QByteArray转QString方法1QByteArray bytes("hello world");
QString string;
string.prepend(bytes);// QByteArray转QString方法2qDebug() << string;

 QByteArray类同样不能以’\0’为结尾,比如

QByteArray bytes;
bytes.resize(5);
bytes[0] = '1';
bytes[1] = '2';
bytes[2] = '3';
bytes[3] = '\0';
bytes[4] = 'a';cout << bytes << endl;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Volatile的内存语义

1、volatile的特性 可见性&#xff1a;对一个volatile变量的读&#xff0c;总能够看到任意一个线程对这个volatile变量的写入。 原子性&#xff1a;对任意单个volatile变量的读/写具有原子性&#xff0c;但类似于volatile这种复合操作不具有原子性。 接下来我们用程序验证。…

独享IP是原生IP吗?

原生IP&#xff1a; 原生IP是指由Internet服务提供商&#xff08;ISP&#xff09;直接分配给用户的IP地址&#xff0c;这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址&#xff0c;与用户的物理位置直接相关。在跨境电商中…

设置height:100%不生效的原因

之前网课案例总是不屑于去看&#xff0c;因为总觉得太花时间&#xff0c;但是不可否认的是&#xff0c;认真去看还是会有收获的&#xff0c;而且常有意外收获 昨天在看实现动画效果的综合案例中&#xff0c;意外解决了我长久以来的一个疑问&#xff1a;为什么给元素设置height…

java在类的定义中创建自己的对象?

当在main方法中新建自身所在类的对象&#xff0c;并调用main方法时&#xff0c;会不断循环调用main方法&#xff0c;直到栈溢出 package com.keywordStudy;public class mainTest {static int value 33;public static void main(String[] args) throws Exception{String[] sn…

Python并发编程:多线程

前序博客中已经介绍了基于多进程的并发编程&#xff0c;本篇主要介绍基于多线程的并发编程。 1 全局解释锁 1.1 定义 全局解释锁(Global Interpreter Lock&#xff0c;简称GIL)是Python(特别是CPython)解释器中的一个机制&#xff0c;这个机制会限制同一时间只有一个线程执行P…

啥?题目是认真的么?啥大模型开源还是闭源,这就是个驳论!

开源大模型与闭源大模型&#xff0c;你更看好哪一方&#xff1f; 简介&#xff1a;评价一个AI模型“好不好”“有没有发展”&#xff0c;首先就躲不掉“开源”和“闭源”两条发展路径。对于这两条路径&#xff0c;你更看好哪一种呢&#xff1f; 其实我认为2者之间压根没啥好纠…

Java队列简介

在现代应用程序开发中&#xff0c;队列是一种常见且强大的数据结构&#xff0c;用于存储和管理待处理的任务序列。结合MySQL数据库&#xff0c;我们可以利用队列实现任务的持久化存储与高效处理。本文将通过四个案例&#xff0c;详细介绍如何在Java中使用队列&#xff0c;并结合…

面了字节大模型算法岗,太难了。。。

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

PCM和QAM

PCM&#xff08;脉冲编码调制&#xff09;和QAM&#xff08;正交振幅调制&#xff09;是两种不同的信号调制技术&#xff0c;它们在通信系统中有着不同的应用和特点。 PCM&#xff08;脉冲编码调制&#xff09; 概述 PCM是一种数字信号处理技术&#xff0c;用于将模拟信号转…

ClickHouse实战处理(一):MergeTree表引擎

MergeTree作为家族系列最基础的表引擎&#xff0c;主要有以下特点&#xff1a; 存储的数据按照主键排序&#xff1a;创建稀疏索引加快数据查询速度。支持数据分区&#xff0c;可以通过PARTITION BY语句指定分区字段。支持数据副本。支持数据采样。 一、MergeTree分类和建表参…

[emailprotected](2)核心概念-JSX

目录 1&#xff0c;什么是 jsx2&#xff0c;空标签3&#xff0c;通过大括号使用 js4&#xff0c;防止注入攻击5&#xff0c;元素的不可变性 官方文档 1&#xff0c;什么是 jsx Facebook 起草的 js 扩展语法。本质上是 js 对象&#xff0c;会被 babel 编译&#xff0c;最终转换…

军队仓库管理系统|DW-S301系统特点

部队仓库管理系统DW-S301系统通过数据采集、互联网和物联网技术&#xff0c;实现数字化智能管控&#xff0c;以提高军用物资的仓储准确率和流转率&#xff0c;缩短周转时间&#xff0c;降低库存成本&#xff0c;也有助于消除生产过程中的不确定性。 系统功能&#xff1a;通过部…

web学习笔记(五十六)

目录 1.绑定类名和style 1.1 绑定类名 1.1.1 绑定单个类名 1.1.2 绑定多个类名 1.2 style相关知识 2. vue的响应式原理 3. v-once 4.本地搭建Vue单页应用 4.1 安装Vue脚手架 4.2 安装对应的包文件 4.3 运行项目 1.绑定类名和style 1.1 绑定类名 1.1.1 绑定单个类名…

openstack报错:openstack volume service list The server is currently unavailable.

openstack报错&#xff1a; [rootcontroller ~]# openstack volume service list The server is currently unavailable. Please try again at a later time.<br /><br /> The Keystone service is temporarily unavailable.(HTTP 503)操作&#xff1a;做cinder 报…

计算机网络协议

网络协议 基于TCP的应用层协议 POP3&#xff08;Post Office Protocol 3&#xff09;&#xff1a; 用于支持客户端远程管理服务器上的电子邮件。它支持**“离线”邮件处理**&#xff0c;即邮件发送到服务器上后&#xff0c;一旦邮件被POP3客户端下载到本地计算机&#xff0c;…

NL6621 实现获取天气情况

一、主要完成的工作 1、建立TASK INT32 main(VOID) {/* system Init */SystemInit();OSTaskCreate(TestAppMain, NULL, &sAppStartTaskStack[NST_APP_START_TASK_STK_SIZE -1], NST_APP_TASK_START_PRIO); OSStart();return 1; } 2、application test task VOID TestAp…

【vue3】计算属性 computed 与 lazy

在 Vue 3 中&#xff0c;computed 和 lazy 都是与响应式系统和数据计算相关的概念&#xff0c;但它们具有不同的用途和行为。 computed 计算属性 computed 是 Vue 中的一个核心功能&#xff0c;用于声明依赖于其他响应式数据的计算属性。当计算属性的依赖数据发生变化时&…

Python3.10用Pyinstaller打包exe报错: IndexError: tuple index out of range

使用Python3.10时&#xff0c;Pyinstaller出现IndexError: tuple index out of range错误&#xff0c;部分异常信息如下&#xff1a; .......yield from get_instructions(code_object)File "C:\Program Files\Python\lib\dis.py", line 338, in _get_instructions_…

网页上的超链接复制到Excel中+提取出网址+如何保存

定义 超链接网页标题地址栏 使用的工具 2024年的WPS是不行的&#xff0c; 如果把知乎网页上的超链接复制到WPS中的Excel中&#xff0c;就会丢掉地址&#xff0c;只剩下网页标题 具体操作&#xff08;转载,在Excel2013上验证可行&#xff09; [1]启用【开发工具】&#xff…

Golang net/http标准库常用方法(三)

大家好&#xff0c;针对Go语言 net/http 标准库&#xff0c;将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节&#xff0c;请大家多多关注。 文章中代码案例只有关键片段&#xff0c;完整代码请查看github仓库&#xff1a;https://github.com/hltfa…