QJson仅在QT中保存空值

时间:2015-03-12 16:08:58

标签: json qt debugging null

我正在使用QTCreator,我有这样的结构:

typedef struct
{
     QString i;
} stBookMark;

以下是其中一些内容:

...
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QVariantList>
#include <QVariant>
#include <QMetaType>

我还补充说:

Q_DECLARE_METATYPE(stBookMark)

问题出在这里:

stBookMark x;
x.i = "Hello";

QVariant c;
c.setValue(x);

QVariantList a;
a.append(c);
a.append(0);
a.append(-119);

qDebug()<<a;

QJsonArray list = QJsonArray::fromVariantList(a);
QJsonDocument saveDoc(list);

qDebug()输出:     (QVariant(stBookMark),QVariant(int,0),QVariant(int,-119))

输出.json文件在这里:

[
    null,
    0,
    -119
 ]

1 个答案:

答案 0 :(得分:1)

看起来你错过了正确导出的一些腿部工作。该文档可能有您正在寻找的答案。

http://doc.qt.io/qt-5/qmetatype.html#details

http://doc.qt.io/qt-5/qvariant.html#setValue

http://doc.qt.io/qt-5/qvariant.html#value

http://doc.qt.io/qt-5/qvariant.html#fromValue

如果您的主要目标是存储和检索JSON中的值,那么您可能不需要强调QVariant。尝试深入了解此示例,并通过添加read(QJsonObject)write(QJsonObject)来了解它们如何处理所有结构和对象。

http://doc.qt.io/qt-5/qtcore-json-savegame-example.html

http://doc.qt.io/qt-5/json.html

希望有所帮助。