-2
我有一個json消息通過QTcpSocket發送。發送消息之前,將JSON消息被格式化如下:將Json字符串作爲輸入的以下Qt QStrings之間有什麼區別?使用QTcpSockets
情況1:
//Heartbeat = QString("{\"messageType\":\"Heartbeat\", \"Thread_Name\":%1, \"Heartbeat\":%2}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
情況2:`
Heartbeat = QString("{ \
\"messageType\":\"Heartbeat\",\
\"Thread_Name\":\"%1\", \
\"Heartbeat\":%2 \
}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
當QString的是準備好了,它是通過與QTcpSocket發送如下:
_pSocket->write(Heartbeat.toLatin1());
_pSocket->flush();
_pSocket->waitForBytesWritten();
在接收端,在兩種情況下都可以接收數據的套接字。但是,當使用QJsonDocument解析接收到的數據時,Case 1無法給出空的json文檔,而Case 2的工作是給出所需的JsonDoc。
這裏是接收端代碼:
QByteArray Data = socket->readAll(); //read data from socket in to a QByteArray
QJsonDocument JsonDoc = QJsonDocument::fromJson(Data); //convert QByteArray to QJsonDocument
是什麼這兩種情況之間的區別? 這兩者之間的最佳方法是什麼?
情況1和2之間的區別是什麼?他們看起來一樣! – HazemGomaa
感謝您的回覆Gomaa。我解決了它。在第一種情況下,%1正在接受字符串參數。但是引號缺失。當我加入如下的報價時,它的工作良好。 'Heartbeat = QString(「{\」messageType \「:\」DetHeartbeat \「,\」Thread_Name \「:\」%1 \「,\」detHeartbeat \「:%2}」)。arg(Thread_Name).arg (HbCount);' – ringul