#include "QtCore"
#include "QMap"
#include "qdebug.h"
#include "qjsondocument.h"
class cclass{
public:
int var;
};
Q_DECLARE_METATYPE(cclass);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
cclass object1;
object1.var=40;
QVariant variant= QVariant::fromValue(object1);
QVariantMap map;
map.insert("variant",variant);
QJsonDocument document= QJsonDocument::fromVariant(map);
qDebug()<<document;
return a.exec();
}
qdebug返回QJsonDocument({"variant":null})
我认为它应该返回object1的值,但它返回null。为什么?我想使用qt将字符串和json中的一个类配对。我如何才能做到
因为QVariant处理自定义类型的方式。
从Qt文档中,Note: If you are working with custom types, you should use the Q_DECLARE_METATYPE() macro to register your custom type.
换句话说,QVariant::fromValue((不知道如何处理cclass类型,只需创建一个空的QVariant,然后在QJsonDocument中进行相应的序列化。