根据你提供的代码,确实存在重复插入 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” 键中,并将其转换为 QJsonDocument
和 QByteArray
以进行 POST 请求发送。请注意在使用之前对代码进行适当的调整和错误处理。
内容由零声教学AI助手提供,问题来源于学员提问