#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中的类配对,我该怎么做
答案 0 :(得分:0)
由于 QVariant 处理自定义类型的方式。
从Qt docs,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 中。