Qt:从unsigned long long到QJsonObject

时间:2015-09-07 21:21:29

标签: c++ json qt qvariant long-long

是否可以将 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

我做错了吗?任何人都可以帮我找到如何在没有外部库的情况下使其正常工作?谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

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