QT Qstring转QJson转QbyteArray

news/2024/6/16 19:03:11

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)
    {
        // 获取每一个 key
        QString key = keys[i];
        // 通过 key 获取对应的 value
        QJsonValue value = obj.value(key);
        if(value.isBool())
        {// 值是一个 bool
            qDebug()<<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方法1

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

 //QByteArray转QString方法

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

QByteArray bytes("hello world");
QString string;
string.prepend(bytes);// QByteArray转QString方法2

qDebug() << 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://lihuaxi.xjx100.cn/news/2162056.html

相关文章

QT 使用QLsitView 实现多个子项选中取消效果

文章目录 效果图概述部分代码总结 效果图 概述 整个界面的布局介绍请看这篇博客想要的到这种自由选择中的Item效果&#xff0c;需要使用到Model-view的思想&#xff0c;每个item中都要存放一个标志位&#xff0c;用在Paint函数去判断是否绘制为按下的状态。每次item被点击时&a…

Element表格之表头合并、行合并和列合并

el-table合并表头handerMethod_el-table表头合并-CSDN博客 Element表格之表头合并、行合并和列合并_element表格表头合并-CSDN博客 一、合并表头 话不多说&#xff0c;先看效果图&#xff1a; 表格结构如上&#xff0c;其中:header-cell-style对表头做了一些处理。 headFirst…

运行时间比较

subprocess.run() 函数参数的含义&#xff1a; shell_command&#xff1a;这是要执行的命令。它可以是一个字符串&#xff0c;也可以是一个包含命令和参数的列表。例如&#xff0c;“ls -l” 或 [“ls”, “-l”]。shellTrue&#xff1a;这是一个布尔值参数&#xff0c;指示是…

人际关系与情景模拟

面试中的同事 1、着眼合作多理解 2、立足长远多承担 3、分工协作多沟通 4、相互学历促成长 面试中的领导 1、尊重领导权威 2、适应领导风格 3、服从领导安排 4、请示领导意见 5、完成领导任务 6、汇报工作结果 面试中的下属&#xff08;面试考的很少&#xff0c;毕…

iPhone退出恢复模式的方法有哪些?iPhone用户必知的几种方法!

大家有没有遇到过类似的情况&#xff0c;苹果手机在进入恢复模式后&#xff0c;却发现怎么也退出不了&#xff0c;这是什么原因&#xff1f;iPhone手机恢复模式怎么退出&#xff1f; 无论是误按、系统故障&#xff0c;还是其他未知因素导致手机进入恢复模式&#xff0c;如何快速…

老师们怎么发布月考成绩

月考成绩的私密发布一直是老师们需要慎重对待的一项工作。要想高效、私密的将成绩反馈给学生和家长&#xff0c;工作量不容小觑&#xff0c;在以前没有那么多教学工具的时代&#xff0c;老师们基本都是手工记录成绩&#xff0c;然后在班级会议上逐一宣读&#xff0c;或者通过邮…

go routing 之 gorilla/mux

1. 背景 继续学习 go 2. 关于 routing 的学习 上一篇 go 用的库是&#xff1a;net/http &#xff0c;这次我们使用官方的库 github.com/gorilla/mux 来实现 routing。 3. demo示例 package mainimport ("fmt""net/http""github.com/gorilla/mux&…

来盘点我的校园生活(3)

来公布上期数学题答案:12 你算对了吗&#xff1f; 今天我们班真是炸开了锅。事情是这样的&#xff0c;我今天早晨上学&#xff0c;学校不让早到&#xff0c;但我一个不小心早到了&#xff0c;主任的规定是尽量不早到&#xff0c;早到不扣分&#xff0c;倒要站在那儿背书&…