J'ai un message json à envoyer sur un QTcpSocket. Avant l'envoi du message, le message JSON est formaté comme ci-dessous:Quelle est la différence entre les chaînes Qt QString suivantes qui prennent une chaîne JSON en entrée? Utilisation de QTcpSockets
Cas 1:
//Heartbeat = QString("{\"messageType\":\"Heartbeat\", \"Thread_Name\":%1, \"Heartbeat\":%2}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
Cas n ° 2: `
Heartbeat = QString("{ \
\"messageType\":\"Heartbeat\",\
\"Thread_Name\":\"%1\", \
\"Heartbeat\":%2 \
}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
Lorsque QString est prêt, il est transmis sur QTcpSocket comme ci-dessous:
_pSocket->write(Heartbeat.toLatin1());
_pSocket->flush();
_pSocket->waitForBytesWritten();
À la réception, le socket peut recevoir des données dans les deux cas. Mais lorsque les données reçues sont analysées à l'aide de QJsonDocument, le cas 1 échoue en donnant un document json vide, alors que Case 2 fonctionne en donnant le JsonDoc requis.
Voici le code de fin de réception:
QByteArray Data = socket->readAll(); //read data from socket in to a QByteArray
QJsonDocument JsonDoc = QJsonDocument::fromJson(Data); //convert QByteArray to QJsonDocument
Quelle est la différence entre les deux cas? Quelle est la meilleure approche entre les deux?
quelle est la différence entre le cas 1 et 2 exactement ?? ils ont l'air identiques! – HazemGomaa
Merci pour votre réponse Gomaa. Je l'ai résolu. Dans le premier cas,% 1 prend un argument de chaîne. Mais les citations manquent autour de lui. Quand j'ai ajouté des citations comme ci-dessous, son bon fonctionnement. 'Heartbeat = QString (" {\ "type_message \": \ "DetHeartbeat \", \ "Thread_Name \": \ "% 1 \", \ "detHeartbeat \":% 2} "). Arg (nom_fil) .arg (HbCount); ' – ringul