【问题标题】:Weird/unreadable returned json encoding read by QByteArray to post request奇怪/不可读的返回 json 编码由 QByteArray 读取以发布请求
【发布时间】:2017-12-08 08:21:14
【问题描述】:

我尝试通过使用发布请求请求它的 api 来废弃网站。然而,json 中返回的数据具有不可读的编码,如下所示:

à^!ÚÄÆ›>à ñ‹yÖž¥³ ¤hóúôë¼zC

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

【问题讨论】:

    标签: json qt post encoding qbytearray


    【解决方案1】:

    查看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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-25
      • 2020-09-02
      • 2015-10-09
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多