赞
踩
一.不同类型数据转换示例:
- #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 转 QObject
- QString 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 转 QString
- QJsonDocument 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,它的作用如下:
- 压缩格式化:使用QJsonDocument::Compact生成的JSON字符串不包含任何不必要的空白字符(如空格、制表符、换行符等),这使得JSON字符串尽可能紧凑,从而减少数据的大小,这对于网络传输或存储空间有限的场景非常有用。
- 方便解析:当接收端只需要解析JSON字符串的一部分时,紧凑格式由于其规律性,更易于截取和处理。
- 与Indented对比:与QJsonDocument::Indented选项相比,后者生成的JSON字符串会包含缩进和换行,使得人类阅读更加容易,但会增加字符串的长度。而QJsonDocument::Compact则正好相反,它生成的字符串体积更小,但可读性较差。
- 转换方法:要将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();
- }

运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。