Qt:从 unsigned long long 到 QJsonObject
Qt : from unsigned long long to QJsonObject
是否可以使用 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
我做错了什么吗?任何人都可以帮助我找出如何在没有外部库的情况下使其正常工作吗?谢谢!
我解决这个问题的方法很简单,就是写 JSON 个字符串而不是 JSON 个数字:
- QString str = QString::number(myLongLong); // 然后,将 str 写成 JSON string
- qlonglong myLongLong = json["key"].toString().toLongLong(); // 将 JSON 字符串转换为 long long
检查转换中的错误可能有意义,请参阅所提供链接的 API 文档。
一个潜在的问题是 JSON 中的数字不需要引号。因此,您可能必须首先转换 JSON 文件以符合此字符串约定。
是否可以使用 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
我做错了什么吗?任何人都可以帮助我找出如何在没有外部库的情况下使其正常工作吗?谢谢!
我解决这个问题的方法很简单,就是写 JSON 个字符串而不是 JSON 个数字:
- QString str = QString::number(myLongLong); // 然后,将 str 写成 JSON string
- qlonglong myLongLong = json["key"].toString().toLongLong(); // 将 JSON 字符串转换为 long long
检查转换中的错误可能有意义,请参阅所提供链接的 API 文档。
一个潜在的问题是 JSON 中的数字不需要引号。因此,您可能必须首先转换 JSON 文件以符合此字符串约定。