[英]How to save and load a QJsonDocument to a file?
我正在尝试学习如何使用JSON和Qt JSON类 。 例如,我想创建一个简单的QJsonDocument
,将其保存到文件中,将其加载到不同的QJsonDocument
并比较结果。
我设法创建了一个QJsonDocument
。 但是, QJsonDocument
接口中没有简单的命令将其保存到文件中。 从文件加载文档也是如此。
#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;
}
这个答案显示了如何加载文档
QFile
QFile
转换为QString
QString
转换为QByteArray
QByteArray
构造QJsonDocument
有没有更简单的方法来做到这一点?
就个人而言,我认为[你链接到的]代码看起来有点混乱。 警告:头编译代码如下。
QJsonDocument loadJson(QString fileName) {
QFile jsonFile(fileName);
jsonFile.open(QFile::ReadOnly);
return QJsonDocument().fromJson(jsonFile.readAll());
}
void saveJson(QJsonDocument document, QString fileName) {
QFile jsonFile(fileName);
jsonFile.open(QFile::WriteOnly);
jsonFile.write(document.toJson());
}
这可能不完美:它假设QFile
而不是QIODevice
,但如果你只处理本地文件,也许没关系。 然后,您可以使用这些函数,而不是每次需要加载/保存Json时重复Json加载/保存代码。
无需转换为字符串和返回。 使用QSettings和QVariant类,您可以轻松完成。 从QJsonDocument
创建QVariant
对象并使用QSettings
保存它。 查看函数QJsonDocument :: fromVariant和QJsonDocument :: toVariant 。 将它们与QSettings
类结合使用,特别是使QSettings :: setValue(const QString&key,const QVariant&value)方法无效 ,这与QVariant
,就是这样。
另外QSettings
类有这个构造函数QSettings :: QSettings(const QString&fileName,Format format,QObject * parent = 0) ,它允许你设置文件的路径 - fileName
变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.