Я пытаюсь преобразовать QJsonValues в их правильные типы данных, но преобразование всегда заканчивается возвращением их значения по умолчанию.
Например, у меня есть следующий объект JSON:
{
"val1": 99,
"val2": true,
"val3": "test"
}
Я получаю эти значения с помощью:
QJsonValue val1 = jsonObj.value("val1");
QJsonValue val2 = jsonObj.value("val2");
QJsonValue val3 = jsonObj.value("val3");
Теперь, если я проверю эти значения QJsonValue в представлении Debug, все они имеют правильные значения и типы данных.
Я вижу...
- val1 как 99 - QJsonValue (Число)
- val2 как true- QJsonValue (Bool)
- val3 как "test" - 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.
Кто-нибудь знает, как я мог решить эту проблему? Я верю, что делаю все прямо здесь. Не уверен, что проблема может быть, и документация делает вещи точно так, как я бы их сделал, но преобразования всегда возвращают значения по умолчанию.