Qt:从unsigned long long到QJsonObject

3

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

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


1
我非常确定这会违反JSON规范,因为它只是用于存储适合于双精度的数字。您是否考虑将数字存储为字符串? - MrEricSir
我正在使用外部API,这不是由我决定。 - Rafael Fontes
1个回答

7

可能是因为我没有表达清楚,但我的问题是解析一个我不拥有的 Web 服务中的 JSON。我无法改变它的构建方式。我应该询问他们吗?我想我会这样做。 - Rafael Fontes
1
Web服务是否在JSON中写入longlong数字?这似乎有点违反标准。问题是:数字是带引号还是不带引号写入的?在这种特殊情况下,最好询问是否将它们作为字符串编写。这样可以更好地控制数字的外观。 - dhaumann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接