Можно ли использовать долго долго в качестве значения в 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
Я делаю что-то не так? Может кто-нибудь помочь мне узнать, как заставить его работать должным образом без внешних библиотек? Спасибо!
Мое решение этой проблемы так же просто, как написать строки JSON вместо чисел JSON:
Возможно, имеет смысл проверить наличие ошибок при конвертации, см. Документацию API по предоставленным ссылкам.
Потенциальная проблема заключается в том, что числа в JSON не требуют кавычек. Таким образом, возможно, вам придется сначала преобразовать файлы JSON, чтобы соответствовать этому соглашению о строках.