我正在使用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
]
答案 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
希望有所帮助。