C++ Qt:从无符号长到QJsonObject
是否可以在QJsonObject中使用long long作为值?我被迫将API从JSON更改为XML,因为我得到的一个字段有BigInt值,而且很可能我无法从QJsonValue中提取大的数字 下面是我的代码和平,可能会显示正在发生的事情:C++ Qt:从无符号长到QJsonObject,c++,json,qt,qvariant,long-long,C++,Json,Qt,Qvariant,Long Long,是否可以在QJsonObject中使用long long作为值?我被迫将API从JSON更改为XML,因为我得到的一个字段有BigInt值,而且很可能我无法从QJsonValue中提取大的数字 下面是我的代码和平,可能会显示正在发生的事情: QJsonObject json; unsigned long long ulongmax = ULONG_LONG_MAX; QVariant variant = ulongmax; qDebug() << variant; qDebug
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
我做错什么了吗?有人能帮我找到如何在没有外部LIB的情况下使其正常工作吗?谢谢大家! 我对这个问题的解决方案很简单,就是编写JSON字符串而不是JSON数字:
- //然后,将str写为JSON字符串
- //将JSON字符串转换为long
一个潜在的问题是JSON中的数字不需要引号。因此,您可能必须首先转换JSON文件以符合此字符串约定。我解决此问题的方法很简单,就是编写JSON字符串而不是JSON数字:
- //然后,将str写为JSON字符串
- //将JSON字符串转换为long
一个潜在的问题是JSON中的数字不需要引号。因此,您可能必须首先转换JSON文件,以符合此字符串约定。我很确定这将违反JSON规范,因为它只用于存储可以放入双精度格式的数字。您考虑过将数字存储为字符串吗?我使用的是外部API,这不取决于我。我很确定这会违反JSON规范,因为它只用于存储可以放入双精度的数字。您考虑过将数字存储为字符串吗?我正在使用外部API,这不取决于我。这可能是因为我没有正确地表达,但我的问题是解析来自我不拥有的Web服务的JSON。我不能改变它的建造方式。我应该要求他们吗?我想我会的。Web服务用JSON写长数字吗?据我所知,这已经有点违反标准了。问题是:这个数字是带引号还是不带引号?在这种特殊情况下,要求将它们作为字符串写入可能是一个好主意。这让数字看起来更像是一种力量。这可能是因为我没有正确地表达,但我的问题是解析来自我不拥有的Web服务的JSON。我不能改变它的建造方式。我应该要求他们吗?我想我会的。Web服务用JSON写长数字吗?据我所知,这已经有点违反标准了。问题是:这个数字是带引号还是不带引号?在这种特殊情况下,要求将它们作为字符串写入可能是一个好主意。这使得这些数字看起来更具说服力。