【发布时间】:2014-12-12 08:43:18
【问题描述】:
这就是我的 json 的样子。如您所见,键ID 是一个数字。
{
"id" : 1223324342,
"name" : "test",
"files"...
}
如何解析数字并将其放入数据类型为 long 的变量中?目前,这就是我所拥有的,但它存储的是 0 而不是实际值。
QJsonDocument document = QJsonDocument::fromJson(jsonData);
QJsonObject object = document.object();
product->product_id = object.value(QString("id")).toString().toLong();
【问题讨论】:
-
我没有使用过 QJsonDocument,但是任何中途的 JSON 套件都应该返回一个 QVariant 或一些诸如“id”的值。
-
请注意,最近在 Qt 开发人员的邮件列表中讨论了这一点,因为其他人希望读取超过 32 位的 JSON 文档中的整数。让我们看看我能不能找到它......
-
不,找不到,抱歉。但如果我没记错的话,他们讨论了
.toLongLong(补充.toInt)是否有意义,但是我不记得他们在决定不时反对的论点 来实现它。 -
最好的方法是将您的 ID 参数作为 HEX 编码字符串传递。这样你就可以通过简单的赋值和位旋转指令来转换它。否则,通过转换十进制 -> 二进制,您会执行大量除法指令,这会增加您的时间并降低代码的性能。