QT开发中文网

QDateTime currentDateTime = QDateTime::currentDateTime(); QString formattedDateTime = currentDateTime.toString("yyyy-MM-dd hh:mm:ss"); //再发送json数据 QJsonObject json; json.insert("id", 1); json.insert("steel", 1); json.insert...

根据你提供的代码,确实存在重复插入 json 对象的情况。这可能是由于以下这行代码造成的:

json.insert("LygDeviceStatus", QJsonValue(json));

这行代码将一个名为 “LygDeviceStatus” 的键与一个值为当前 json 对象的键值对插入到 json 中。这就导致了重复插入。

要修正这个问题,你可以直接将 json 对象插入到最终要发送的主对象中,而无需将其作为自己的子对象。修改后的代码如下所示:

QJsonObject mainJson;
mainJson.insert("id", 1);
mainJson.insert("steel", 1);
mainJson.insert("trainNoDetect", 1);
mainJson.insert("radar", 1);
mainJson.insert("storageServer", 1);
mainJson.insert("ll", 1);
mainJson.insert("lr", 1);
mainJson.insert("ml", 1);
mainJson.insert("mr", 1);
mainJson.insert("tl", 1);
mainJson.insert("tr", 1);
mainJson.insert("createTime", formattedDateTime);

QJsonObject lygDeviceStatus;
lygDeviceStatus.insert("LygDeviceStatus", mainJson);

QJsonDocument doc;
doc.setObject(lygDeviceStatus);
QByteArray array = doc.toJson(QJsonDocument::Compact);

QNetworkRequest request;
request.setUrl(QUrl(ui->lineEdit_2->text()));
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
request.setRawHeader("Authorization", ui->lineEdit_3->text().toLatin1());
m_accessManagerTask->post(request, array);

这样,你只需将主 json 对象作为值插入到 “LygDeviceStatus” 键中,并将其转换为 QJsonDocumentQByteArray 以进行 POST 请求发送。请注意在使用之前对代码进行适当的调整和错误处理。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=11032

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?