Qt: от unsigned long long до QJsonObject

Можно ли использовать долго долго в качестве значения в QJsonObject ? Я был вынужден изменить свой API с JSON в XML потому что 1 поле у ​​меня было BigInt значения и, по-видимому, я не могу извлечь большие числа из QJsonValue.

Вот мой код, который может показать, что происходит:

QJsonObject json;

unsigned long long ulongmax = ULONG_LONG_MAX;

QVariant variant = ulongmax;

qDebug() << variant;
qDebug() << ulongmax;

json.insert( "key", QJsonValue::fromVariant( variant ) );

unsigned long long json_value = json.value("key").toVariant().toULongLong();

qDebug() << json_value;

Выход:

QVariant(qulonglong, 18446744073709551615)
18446744073709551615
9223372036854775808

Желаемый результат:

QVariant(qulonglong, 18446744073709551615)
18446744073709551615
18446744073709551615

Я делаю что-то не так? Может кто-нибудь помочь мне узнать, как заставить его работать должным образом без внешних библиотек? Спасибо!

0

Решение

Мое решение этой проблемы так же просто, как написать строки JSON вместо чисел JSON:

Возможно, имеет смысл проверить наличие ошибок при конвертации, см. Документацию API по предоставленным ссылкам.

Потенциальная проблема заключается в том, что числа в JSON не требуют кавычек. Таким образом, возможно, вам придется сначала преобразовать файлы JSON, чтобы соответствовать этому соглашению о строках.

3

Другие решения


По вопросам рекламы [email protected]