我有这段代码,应该从此页面获取国家/地区信息(http://ipinfo.io/json):
{
QByteArray rawData;
QString countryIp;
if (rep->error() == QNetworkReply::NoError)
rawData = rep->readAll();
QJsonDocument jsonResponse(QJsonDocument::fromJson(rawData));
QJsonObject jsonObject = jsonResponse.object();
countryIp = jsonObject["country"].toString();
qDebug() << countryIp;
}
但实际上我从这段代码中得到的只是一个空白区域。我无法找到错误的地方。
答案 0 :(得分:0)
您正在尝试创建QJsonDocument
并将其转换为其他类型而不验证数据是否有效。
QString readJsonData(QNetworkReply *rep)
{
QByteArray rawData;
QString countryIp;
//return if there was an error
if (rep->error() != QNetworkReply::NoError)
return countryIp;
rawData = rep->readAll();
QJsonDocument jsonResponse(QJsonDocument::fromJson(rawData));
//Check that the JSON is valid and can be converted to QJsonObject
if (jsonResponse.isNull() || !jsonResponse.isObject())
return countryIp;
QJsonObject jsonObject = jsonResponse.object();
//And finally check that it contains the value you need
if (!jsonObject.contains("country")
return countryIp;
countryIp = jsonObject["country"].toString();
qDebug() << countryIp;
}
return countryIp;
}
您基本上只需要在转换数据时进行检查,以验证您没有收到垃圾或空/空对象。然后你可以调试并找到问题所在。