2015-09-07 2 views
0

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

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

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 

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

+1

Я уверен, что это нарушит спецификацию JSON, поскольку она предназначена только для хранения чисел, которые могут вписываться в двойной. Рассматривали ли вы сохранение числа в виде строки? – MrEricSir

+0

Я использую внешний API, это не для меня. –

ответ

3

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

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

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

+0

Это верно, потому что я не очень хорошо выражал, но моя проблема заключается в анализе JSON из веб-службы, которой я не владею. Я не могу изменить способ его построения. Должен ли я попросить их? Я думаю я сделаю. –

+1

Является ли webservice пишите longlong номера в JSON? Как я понимаю, это уже было бы похоже на стандарт. Возникает вопрос: номер написан с кавычками или без них? Вероятно, неплохо попросить просто написать их как строку в этом конкретном случае. Это дает больше возможностей для того, как выглядят цифры. – dhaumann

Смежные вопросы