Qt 不同数据类型转换

 一.不同类型数据转换示例:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);//QString 转 QByteArray:QString str = "你好,世界!";QByteArray byteArray = str.toUtf8();qDebug()<<"byteArray::"<<byteArray;//QByteArray 转 QString:QByteArray byteArray2 = "你好,世界!";QString str1 = QString::fromUtf8(byteArray2);qDebug()<<"str::"<<str1;//QString 转 QObjectQString aJsonStr = "{\"firstName\": \"Brett\",\"lastName\": \"McLaughlin\"}";QJsonDocument lJsonDoc = QJsonDocument::fromJson(aJsonStr.toUtf8());QJsonObject lJsonObj = lJsonDoc.object();qDebug()<<"firstName::"<<lJsonObj["firstName"].toString()<<"\n"<<"lastName::"<<lJsonObj["lastName"].toString();//QObject 转 QStringQJsonDocument jsonDoc;jsonDoc.setObject(lJsonObj);QByteArray lJsonByte = jsonDoc.toJson(QJsonDocument::Compact);QString lJsonStr(lJsonByte);qDebug()<<"lJsonStr::"<<lJsonStr;return app.exec();
}

运行结果:

知识点补充 :QJsonDocument::Compact讲解

QJsonDocument::Compact是用于生成不包含空格和换行符的紧凑JSON字符串的选项

在Qt框架中,处理JSON数据时经常需要将JSON对象转换为字符串格式,以便于存储或传输。QJsonDocument类提供了这样的功能,它允许开发者将JSON对象转换成不同格式的字符串。具体到QJsonDocument::Compact,它的作用如下:

  1. 压缩格式化:使用QJsonDocument::Compact生成的JSON字符串不包含任何不必要的空白字符(如空格、制表符、换行符等),这使得JSON字符串尽可能紧凑,从而减少数据的大小,这对于网络传输或存储空间有限的场景非常有用。
  2. 方便解析:当接收端只需要解析JSON字符串的一部分时,紧凑格式由于其规律性,更易于截取和处理。
  3. 与Indented对比:与QJsonDocument::Indented选项相比,后者生成的JSON字符串会包含缩进和换行,使得人类阅读更加容易,但会增加字符串的长度。而QJsonDocument::Compact则正好相反,它生成的字符串体积更小,但可读性较差。
  4. 转换方法:要将QJsonDocument对象转换为紧凑格式的JSON字符串,可以使用toJson()成员函数并传入QJsonDocument::Compact作为参数。例如:QByteArray compactJson = jsonDoc.toJson(QJsonDocument::Compact);,其中jsonDoc是一个QJsonDocument对象。

综上所述,QJsonDocument::Compact是Qt提供的一个用于生成紧凑格式JSON字符串的选项,它有助于减小数据大小并简化部分解析的过程。在需要节省空间或传输数据的场合,使用这一选项会非常有帮助。

二.数据解析失败提示处理 

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);//QString aJsonStr1 = "{\"firstName\": \"Brett\"\"lastName\": \"McLaughlin\"}";QString aJsonStr1 = "{\"firstName\": \"\"\"lastName\": \"McLaughlin\"}";//数据解析失败输出错误处理QJsonParseError lJsonParseError;QJsonDocument lJsonDoc1 = QJsonDocument().fromJson(aJsonStr1.toUtf8(), &lJsonParseError);if(lJsonParseError.error != QJsonParseError::NoError) {qWarning() << "Parse json failed: " << lJsonParseError.errorString();return {};}return app.exec();
}

运行结果:

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

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

相关文章

使用Python的smtplib和email模块实现邮件收发功能

&#x1f4e7; 使用Python的smtplib和email模块实现邮件收发功能 在Python中&#xff0c;smtplib和email模块是处理电子邮件的强大工具。本文将通过多个案例代码&#xff0c;详细介绍如何使用这两个模块来发送和接收电子邮件。&#x1f680; &#x1f528; 环境准备 在开始之…

别踩坑!2024年小红书代写代发机构选择指南!

在小红书平台上&#xff0c;一篇优质的内容往往能迅速吸引用户的关注&#xff0c;为品牌带来不可估量的曝光和转化。然而&#xff0c;对于许多品牌来说&#xff0c;创作高质量的小红书内容并非易事。因此&#xff0c;选择一家专业的小红书代写代发机构成为了不少品牌的明智之选…

【前端Vue】社交信息头条项目完整笔记第2篇:二、登录注册,准备【附代码文档】

社交媒体-信息头条项目完整开发笔记完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;一、项目初始化使用 Vue CLI 创建项目,加入 Git 版本管理,调整初始目录结构,导入图标素材,引入 Vant 组件库,移动端 REM 适配,关于 , 配置文件,封装请求模块。十、用户关…

线程池相关详解

1.线程池的核心参数 线程池核心参数主要参考ThreadPoolExecutor这个类的7个参数的构造函数&#xff1a; corePoolSize核心线程数目 maximumPoolSize最大线程数目&#xff08;核心线程救急线程的最大数目&#xff09; keepAliveTime生存时间:救急线程的生存时间&#xff0c;生…

【Linux中vim系列】如何在vim中检索字符串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

1.2 编译型语言和解释型语言的区别

编译型语言和解释型语言的区别 通过高级语言编写的源码&#xff0c;我们能够轻松理解&#xff0c;但对于计算机来说&#xff0c;它只认识二进制指令&#xff0c;源码就是天书&#xff0c;根本无法识别。源码要想执行&#xff0c;必须先转换成二进制指令。 所谓二进制指令&…

elment-ui el-tabs组件 每次点击后 created方法都会执行2次

先看错误的 日志打印: 错误的代码如下: 正确的日志打印: 正确的代码如下: 前言: 在element-ui的tabs组件中,我们发现每次切换页面,所有的子组件都会重新渲染一次。当子页面需要发送数据请求并且子页面过多时,这样会过多的占用网络资源。这里我们可以使用 v-if 来进行…

Oh My Bug || PHPmyAdmin导入csv文件时,502报错

解决&#xff1a; 在宝塔面板文件配置中加入一下代码 location / { proxy_pass http://localhost:888; } location /backend-api { rewrite ^/backend-api(.*)$ $1 break; proxy_pass http://你的ip地址; }

判断出栈顺序是否满足入栈顺序

在学习数据结构的过程中,使用代码实现算法有利于加深理解 下面思路过程以及代码 0.先给出各个变量名字以及作用 1.函数 //match是具体的匹配函数&#xff1b;input是输入的顺序&#xff1b;output是输出的顺序 void match(string& input, string& output); 2.函数内部…

Android 设置相关页面

Android 设置相关页面 本文主要记录下android 中跳转设置相关页面的一些action. 在android 中,我们一般使用intent指定的action来跳转相关设置页面. 1: WLAN Action 设置为Settings.ACTION_WIFI_SETTINGS ,用户可以跳转wifi设置页面. Intent intent new Intent(Settings.…

基于python+vue发艺美发店管理系统flask-django-php-nodejs

目 录 摘 要 I Abstract II 1 绪 论 1 1.1 研究背景 1 1.2 研究意义 2 1.3 主要内容 2 2系统相关技术概述 4 2.1开发工具 4 2.2 python语言简介 4 2.4 django框架介绍 5 2.5 MySQL数据库技术简介 6 3 发艺美发店管理系统的设计 7 3.1系统可行性分析 7 3.1.1技术可行性 8 3.1.2…

Service Mesh 概述

&#x1f50d; Service Mesh 概述: Service Mesh 是一个专门使服务与服务之间的通信变得安全、快速和可靠的基础设施。对于构建云原生应用的人来说&#xff0c;Service Mesh 是必不可少的。 &#x1f9e9; Service Mesh 的定义: Service Mesh 是专注于处理服务之间通信的服务…

Linux系统及操作 (09)

Linux系统及操作 (08) 搭建理想环境-----------母版机器 构建YUM仓库 CD光盘安装&#xff08;注意&#xff0c;虚拟机有时候吃光盘&#xff09; **[ mount ]**临时挂载CD光盘, 挂载到新创建目录 [ /mydvd ] [ /etc/yum.repos.d ] 清理原有yum文件&#xff0c;并创建新的yum文…

出现nginx error 问题

报错&#xff1a; Something has triggered an error on your website. This is the default error page for nginx that is distributed with Fedora. It is located /usr/share/nginx/html/50x.html You should customize this error page for your own site or edit the er…

使用springboot和vue3以及EasyExcel做导出数据(复用)

Override public void exportData(HttpServletResponse response) {try {// 设置响应结果类型 response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没…

使用docker搭建faiss向量数据库

为了不污染服务器环境&#xff0c;保证程序运行时有更好的隔离性&#xff0c;领导要求基于容器运行程序。 一、准备工作 1、创建文件夹faiss 该文件夹有用于存放faiss相关的文件及脚本 mkdir ~/faiss 2、创建data文件夹 cd ~/faiss mkdir data 这个文件夹用于volume&#xf…

【史上最全面arduino esp32教程】SPI层次结构SPI协议与SPI控制器结构

文章目录 前言一、SPI 程序层次1.1 硬件原理图1.2 硬件框图1.3 软件层次 二、SPI协议2.1 硬件连线2.2 如何访问SPI设备2.3 SPI 框图 总结 前言 欢迎阅读本篇文章&#xff0c;将为您介绍Arduino ESP32上的SPI通信协议。SPI&#xff08;Serial Peripheral Interface&#xff09;…

鸿蒙开发案例:【图像加载缓存库ImageKnife】

专门为OpenHarmony打造的一款图像加载缓存库&#xff0c;致力于更高效、更轻便、更简单。 简介 OpenHarmony的自研版本&#xff1a; 支持内存缓存&#xff0c;使用LRUCache算法&#xff0c;对图片数据进行内存缓存。支持磁盘缓存&#xff0c;对于下载图片会保存一份至磁盘当…

新材料正在加速金属3D打印的应用步伐

在金属3D打印领域&#xff0c;材料性能是影响工件综合表现的关键因素&#xff0c;如强度、硬度、耐腐蚀性、抛光性能以及导热性能等&#xff0c;都与材料息息相关&#xff0c;好的材料是推动金属3D打印向更多领域应用的基础。 在这一背景下&#xff0c;上海毅速新材料推出的多款…

JavaScript对象修饰教程

在JavaScript中&#xff0c;对象修饰是一种常见的编程模式&#xff0c;用于动态地向对象添加新的功能或修改现有功能&#xff0c;同时保持对象的原始结构不变。对象修饰可以帮助我们实现代码的复用、扩展和维护&#xff0c;让代码更加灵活和可扩展。本文将深入探讨JavaScript对…