Raf*_*cio 1 c++ qt json 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;
Run Code Online (Sandbox Code Playgroud)
输出:
QVariant(qulonglong, 18446744073709551615)
18446744073709551615
9223372036854775808
Run Code Online (Sandbox Code Playgroud)
期望的输出:
QVariant(qulonglong, 18446744073709551615)
18446744073709551615
18446744073709551615
Run Code Online (Sandbox Code Playgroud)
我做错了什么吗?谁能帮我找出如何在没有外部库的情况下使其正常工作?谢谢!
我对这个问题的解决方案就像编写 JSON 字符串而不是 JSON 数字一样简单:
检查转换中的错误可能是有意义的,请参阅所提供链接的 API 文档。
一个潜在的问题是 JSON 中的数字不需要引号。因此,您可能必须首先转换 JSON 文件以符合此字符串约定。