我正在使用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
]发布于 2015-03-13 05:52:51
看起来你遗漏了一些跑腿工作才能正确地导出。本文档可能提供了您正在寻找的答案。
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
希望这能有所帮助。
https://stackoverflow.com/questions/29014779
复制相似问题