QByteArray读取的奇怪/不可读的返回json编码发布请求

时间:2017-07-04 19:38:20

标签: json qt post encoding qbytearray

我尝试通过请求api请求删除网站。然而,json中返回的数据有一个不可读的编码,如下所示:

à^!ÚÄÆ>>Ãñ

请求的Content-Type是“application / json; charset = utf-8”。有人对这种奇怪的编码有所了解吗?先验请求有效,否则存在明显错误。导航器的相同请求具有完全可读的响应。我正在使用Qt和QNetworkRequest。答案在我用toStdString()读取的QByteArray中。如果我尝试在QJsonDocument或QJsonObject中重新格式化QByteArray之前阅读它,答案中没有任何内容。 提前谢谢

1 个答案:

答案 0 :(得分:0)

检查QJsonDocument类,并使用静态函数通过使用UTF-8格式的bytearray构造JsonDocument。

const QByteArray dataFromServer;
QJsonParseError er;
const QJsonDocument doc = QJsonDocument::fromJson(json, &er);
if (er.error != QJsonParseError::NoError) {
   return false;
}

然后,点击QJsonObject,检查它是否是列表。您可以使用密钥迭代列表或访问给定值:

const QJsonObject object = doc.object();
const QString value = object.value(QLatin1String("My_key");
const std::string stdValue = value.toStdString();