2

是否可以使用long long作为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

我做错什么了吗?谁能帮我找出如何在没有外部库的情况下使其正常工作?谢谢!

4

1 回答 1

6

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

检查转换中的错误可能是有意义的,请参阅所提供链接的 API 文档。

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

于 2015-09-10T07:23:35.373 回答