c++ - QJsonValue 变空

标签 c++ qt qt5 qjson qjsonobject

当我向时间 API 发出请求以获取莫斯科时间时,变量中的 int 为空。 这是代码:

QNetworkReply* reply = manager->get(QNetworkRequest(QUrl("https://yandex.com/time/sync.json?geo=213")));
QEventLoop loop;
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();

QByteArray data = reply->readAll();
QJsonDocument document = QJsonDocument::fromJson(data);
QJsonObject root = document.object();
qDebug() << data;
qDebug() << root.value("time").toInt();

这是 JSON:

{"time":1519489796585,"clocks":{"213":{"id":213,"name":"Moscow","offset":10800000,"offsetString":"UTC+3:00","showSunriseSunset":true,"sunrise":"07:33","sunset":"17:53","isNight":true,"skyColor":"#3f68b2","weather":{"temp":-10,"icon":"ovc","link":"/moscow"},"parents":[{"id":225,"name":"Russia"}]}}}

最佳答案

如果数字修改为:1519490351963,这超出了一个整数的较大值:2147483647,所以没有转换成整数,一个可能的解决办法是转换成 double :

// qDebug() << root["time"].toDouble();
qDebug() << root.value("time").toDouble();

另一种可能的解决方案是将其转换为QVariant,然后使用toLongLong()来使用qlonglong,这是一种支持整数的类型更多位。

//qDebug() << root["time"].toVariant().toLongLong();
qDebug() << root.value("time").toVariant().toLongLong();

关于c++ - QJsonValue 变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965090/

相关文章:

带有纯虚函数的C++模板返回值

c++ - 阻止 `const` 成员在另一个别名下被编辑

c++ - 使用 op[] 修改 std::string 超出其大小的影响?

c++ - 如何跟踪C++库的加载过程?

c++ - Qt : How to cast QTableRowItem to Object?

c++ - 如何返回QVariant类型数组

qt5 - PyQt5 - pyuic5 模块 PyQt5.uic 未找到

c++ - Qt - 单击 QML 按钮时如何运行 C++ 函数?使用 QQmlApplicationEngine

c++ - Mini Filter 驱动程序与 Windows 服务的通信

qt - 添加 QGraphicsProxyWidget 时崩溃