因为在实际项目中,遇到json中含有汉字,在转换显示的时候出现乱码,如果我们要用QString的时候,所以我们在接收完之后进行一个转换:
void Receiver::dataread()
{
while(tcp_Msg->bytesAvailable()>0)
{
QByteArray datagram;
datagram.resize(tcp_Msg->bytesAvailable());
tcp_Msg->read(datagram.data(),datagram.size());
//在这里我们进行一个转换,之后就可以用QJson分析把我们收到的json数据
QString str = QString::fromLocal8Bit(datagram.data());
analysis(str);
}
}
}
之后我们进行解析含有中文的json数据,关键代码如下
void ReceiverWB::analysis(QString msg)
{
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(msg.toStdString().data(), &json_error);
if(json_error.error == QJsonParseError::NoError)
{
if(parse_doucment.isObject())
{
QJsonObject obj = parse_doucment.object();
if(obj.contains("name"))
{
QJsonValue name_value = obj.take("name");
if(name_value.isString())
{
//在这里我们把汉字的名称做了转换,保存到tmpCamre->name里{"name":"张三"}
QString str = QString::fromLocal8Bit(name_value.toString().toLocal8Bit().data());
strcpy(tmpCamra->Name,str.toStdString().data());
}
}
}
}
}