-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