如何将 QVariant 转换为 QJsonValue?
Posted
技术标签:
【中文标题】如何将 QVariant 转换为 QJsonValue?【英文标题】:How to convert QVariant to QJsonValue? 【发布时间】:2017-12-08 07:51:47 【问题描述】:如何将QVariant
转换为QJsonValue
?
我知道QVariant
提供了toJsonValue
函数,但它没有按预期执行。
例如:
qDebug()<<QVariant(1.0).toJsonValue();
qDebug()<<QVariant("test").toJsonValue();
两者都返回:
QJsonValue(null)
QJsonValue(null)
期望输出:
QJsonValue(double, 1)
QJsonValue(string, "test")
【问题讨论】:
【参考方案1】:你也可以使用这个静态函数:
QJsonValue::fromVariant( myVariant )
查看this link了解更多信息。
【讨论】:
这会进行所需的转换,不像QVariant::toJsonValue
【参考方案2】:
您可以执行以下操作:
QVariant dblVariant(1.0);
QVariant strVariant("test");
QJsonValue dblJs(dblVariant.toDouble());
QJsonValue strJs(strVariant.toString());
您的方法不起作用,因为变体对象应该具有用户类型QJsonValue
,但它没有。因此它返回默认构造的QJsonValue
对象。
【讨论】:
我认为 Qt 应该更“聪明”,能够检测数据类型。 在这种情况下,聪明一点都没有。如果您有值1.0
,除非您明确指定变体的类型,否则无法说出它是双精度值还是 QJsonValue。如果您需要让 Qt 知道 QVariant 存储 QJsonValue,您必须使用 QVariant::QVariant(const QJsonValue &val)
从 QJsonValue 中构造 QVariant。在这种情况下,toJsonValue()
将正常工作。以上是关于如何将 QVariant 转换为 QJsonValue?的主要内容,如果未能解决你的问题,请参考以下文章