将JSON字符串作为输入的以下QT QString之间有什么区别?使用QTCPSOCKET



我有一个JSON消息,可以通过qtcpsocket发送。在发送消息之前,将JSON消息格式化如下:

案例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准备就绪时,它通过QTCPSOCTECT传输如下:

_pSocket->write(Heartbeat.toLatin1());
_pSocket->flush();
_pSocket->waitForBytesWritten();

接收端,插座在两种情况下均可接收数据。但是,当使用QJSondocument解析收到的数据时,情况1失败了,将json doc提供,案例2的工作原理。

。 。

这是接收端代码:

QByteArray Data = socket->readAll(); //read data from socket in to a QByteArray
QJsonDocument JsonDoc = QJsonDocument::fromJson(Data); //convert QByteArray to QJsonDocument

两种情况之间有什么区别?两者之间最好的方法是什么?

在第一种情况下,%1正在使用字符串参数。但是周围缺少引号。当我添加以下引号时,它的工作状况很好。

Heartbeat = QString("{"messageType":"Heartbeat", "Thread_Name":"%1", "Heartbeat":%2}").arg(Thread_Name).arg(HbCount);

最新更新