如何将QVariant转换为QJsonValue?

3

如何将 QVariant 转换为 QJsonValue?我知道 QVariant 提供了 toJsonValue 函数,但它并未按照预期执行。

例如:

qDebug()<<QVariant(1.0).toJsonValue();
qDebug()<<QVariant("test").toJsonValue();

两者都返回:

QJsonValue(null)
QJsonValue(null)

预期输出:

QJsonValue(double, 1)
QJsonValue(string, "test")
2个回答

5
你也可以使用这个静态函数:
QJsonValue::fromVariant( myVariant )

更多信息请查看此链接


1
这样做可以实现所需的转换,不像 QVariant::toJsonValue - Tom Sirgedas

0
你可以尝试以下操作:
QVariant dblVariant(1.0);
QVariant strVariant("test");

QJsonValue dblJs(dblVariant.toDouble());
QJsonValue strJs(strVariant.toString());

你的方法不起作用,因为变量对象应该具有用户类型QJsonValue,但它没有。因此,它返回默认构造的QJsonValue对象。

我认为Qt应该更加“智能”,能够检测数据类型。 - JustWe
在这种情况下,与聪明无关。如果您有值1.0,除非您明确指定变量的类型,否则无法确定它是double还是QJsonValue。如果您需要让Qt知道QVariant存储QJsonValue,则必须使用QVariant::QVariant(const QJsonValue &val)构造QVariant。在这种情况下,toJsonValue()将正常工作。 - vahancho

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