当前位置:   article > 正文

Qt 不同数据类型转换

Qt 不同数据类型转换

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

  1. #include <QGuiApplication>
  2. #include <QQmlApplicationEngine>
  3. #include <QJsonDocument>
  4. #include <QJsonObject>
  5. #include <QDebug>
  6. int main(int argc, char *argv[])
  7. {
  8. QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  9. QGuiApplication app(argc, argv);
  10. //QString 转 QByteArray:
  11. QString str = "你好,世界!";
  12. QByteArray byteArray = str.toUtf8();
  13. qDebug()<<"byteArray::"<<byteArray;
  14. //QByteArray 转 QString:
  15. QByteArray byteArray2 = "你好,世界!";
  16. QString str1 = QString::fromUtf8(byteArray2);
  17. qDebug()<<"str::"<<str1;
  18. //QString 转 QObject
  19. QString aJsonStr = "{\"firstName\": \"Brett\",\"lastName\": \"McLaughlin\"}";
  20. QJsonDocument lJsonDoc = QJsonDocument::fromJson(aJsonStr.toUtf8());
  21. QJsonObject lJsonObj = lJsonDoc.object();
  22. qDebug()<<"firstName::"<<lJsonObj["firstName"].toString()<<"\n"
  23. <<"lastName::"<<lJsonObj["lastName"].toString();
  24. //QObject 转 QString
  25. QJsonDocument jsonDoc;
  26. jsonDoc.setObject(lJsonObj);
  27. QByteArray lJsonByte = jsonDoc.toJson(QJsonDocument::Compact);
  28. QString lJsonStr(lJsonByte);
  29. qDebug()<<"lJsonStr::"<<lJsonStr;
  30. return app.exec();
  31. }

运行结果:

知识点补充 :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字符串的选项,它有助于减小数据大小并简化部分解析的过程。在需要节省空间或传输数据的场合,使用这一选项会非常有帮助。

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

  1. #include <QGuiApplication>
  2. #include <QQmlApplicationEngine>
  3. #include <QJsonDocument>
  4. #include <QJsonObject>
  5. #include <QDebug>
  6. int main(int argc, char *argv[])
  7. {
  8. QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  9. QGuiApplication app(argc, argv);
  10. //QString aJsonStr1 = "{\"firstName\": \"Brett\"\"lastName\": \"McLaughlin\"}";
  11. QString aJsonStr1 = "{\"firstName\": \"\"\"lastName\": \"McLaughlin\"}";
  12. //数据解析失败输出错误处理
  13. QJsonParseError lJsonParseError;
  14. QJsonDocument lJsonDoc1 = QJsonDocument().fromJson(aJsonStr1.toUtf8(), &lJsonParseError);
  15. if(lJsonParseError.error != QJsonParseError::NoError) {
  16. qWarning() << "Parse json failed: " << lJsonParseError.errorString();
  17. return {};
  18. }
  19. return app.exec();
  20. }

运行结果:

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/283094
推荐阅读
相关标签
  

闽ICP备14008679号