从Qvariant转换时,QJsonDocument给出null吗?

时间:2018-07-18 14:05:20

标签: json qt qjson

#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中的类配对,我该怎么做

1 个答案:

答案 0 :(得分:0)

由于 QVariant 处理自定义类型的方式。

Qt docsNote: 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 中。