我试图将 QJsonValues 转换为其正确的数据类型,但转换最终总是返回其默认值。
例如,我有以下 JSON 对象:
{
"val1": 99,
"val2": true,
"val3": "test"
}
我通过以下方式获取这些值:
QJsonValue val1 = jsonObj.value("val1");
QJsonValue val2 = jsonObj.value("val2");
QJsonValue val3 = jsonObj.value("val3");
现在,如果我在“调试” View 中检查这些 QJsonValue,它们都有正确的值和数据类型。
我看到了...
- val1 为 99 - QJsonValue(Number)
- val2 as true - QJsonValue(Bool)
- val3 as “测试” - QJsonValue(String)
我现在执行以下操作:
int valInt1 = val1.toInt();
bool valBool2 = val2.toBool();
QString valString3 = val3.toString();
这将为我提供0(valInt1)、false(valBool2)和“test” 代表 valString3。 由于某种原因,toString() 似乎工作正常,但其他转换方法都返回其默认值。
使用val1,我可以执行以下操作以使其正常工作:
int valInt1 = val1.toString().toInt();
但这不是 bool 值的选项。
有谁知道我该如何解决这个问题吗?我相信我在这里做的一切都是正确的。不确定问题可能是什么,并且文档的处理方式与我完全相同,但转换始终返回默认值。
最佳答案
我现在已经通过将 JsonObject 转换为 QVariantMap 并忽略 QJsonValues 解决了这个问题。它们要么被窃听,要么我不明白它们是如何工作的。
QVariantMap map = jsonObj.toVariantMap();
int valInt1 = map.value("val1").toInt();
bool valBool2 = map.value("val2").toBool();
QString valString3 = map.value("val3").toString();
关于qt - QJsonValue 的转换方法始终返回其默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58233685/