Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt:从无符号长到QJsonObject_C++_Json_Qt_Qvariant_Long Long - Fatal编程技术网

C++ Qt:从无符号长到QJsonObject

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中使用long long作为值?我被迫将API从JSON更改为XML,因为我得到的一个字段有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

我做错什么了吗?有人能帮我找到如何在没有外部LIB的情况下使其正常工作吗?谢谢大家!

我对这个问题的解决方案很简单,就是编写JSON字符串而不是JSON数字:

  • //然后,将str写为JSON字符串
  • //将JSON字符串转换为long
检查转换中的错误可能有意义,请参阅所提供链接的API文档


一个潜在的问题是JSON中的数字不需要引号。因此,您可能必须首先转换JSON文件以符合此字符串约定。

我解决此问题的方法很简单,就是编写JSON字符串而不是JSON数字:

  • //然后,将str写为JSON字符串
  • //将JSON字符串转换为long
检查转换中的错误可能有意义,请参阅所提供链接的API文档


一个潜在的问题是JSON中的数字不需要引号。因此,您可能必须首先转换JSON文件,以符合此字符串约定。

我很确定这将违反JSON规范,因为它只用于存储可以放入双精度格式的数字。您考虑过将数字存储为字符串吗?我使用的是外部API,这不取决于我。我很确定这会违反JSON规范,因为它只用于存储可以放入双精度的数字。您考虑过将数字存储为字符串吗?我正在使用外部API,这不取决于我。这可能是因为我没有正确地表达,但我的问题是解析来自我不拥有的Web服务的JSON。我不能改变它的建造方式。我应该要求他们吗?我想我会的。Web服务用JSON写长数字吗?据我所知,这已经有点违反标准了。问题是:这个数字是带引号还是不带引号?在这种特殊情况下,要求将它们作为字符串写入可能是一个好主意。这让数字看起来更像是一种力量。这可能是因为我没有正确地表达,但我的问题是解析来自我不拥有的Web服务的JSON。我不能改变它的建造方式。我应该要求他们吗?我想我会的。Web服务用JSON写长数字吗?据我所知,这已经有点违反标准了。问题是:这个数字是带引号还是不带引号?在这种特殊情况下,要求将它们作为字符串写入可能是一个好主意。这使得这些数字看起来更具说服力。