我正在尝试学习如何使用 JSON 和 Qt JSON类。例如,我创建了一个简单的QJsonDocument
,将其保存到文件中,将其加载到其他QJsonDocument
中并比较结果。
我设法创建了QJsonDocument
。但是,QJsonDocument
interface中没有简单的命令可以将其保存到文件中。 从文件加载文档也是如此。
#include <QJsonObject>
#include <QJsonDocument>
#include <QVariant>
int main()
{
QVariantMap map;
map.insert("integer", 1);
map.insert("double", 2.34);
map.insert("bool", QVariant(true));
map.insert("string", "word");
QJsonObject object = QJsonObject::fromVariantMap(map);
QJsonDocument document;
document.setObject(object);
// ?? save document to file
// ?? load file to document
return 0;
}
This answer显示如何通过以下方式加载文档
QFile
QFile
转换为QString
QString
转换为QByteArray
QJsonDocument
构造QByteArray
有没有更简单的方法可以做到这一点?
最佳答案
无需转换为字符串再返回。使用QSettings和QVariant类,您可以轻松地做到这一点。从QVariant
创建QJsonDocument
对象,并将其保存为QSettings
。查看函数QJsonDocument::fromVariant和QJsonDocument::toVariant。将它们与QSettings
类(特别是void QSettings::setValue ( const QString & key, const QVariant & value )方法)结合起来,就可以与QVariant
很好地工作。
另外QSettings
类具有此构造函数QSettings::QSettings ( const QString & fileName, Format format, QObject * parent = 0 )
这将允许您设置文件的路径-fileName
变量