我正在尝试学习如何使用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;
}
这个答案显示了如何加载文档
QFileQFile为QStringQString为QByteArrayQJsonDocument从中构建QByteArray有没有更简单的方法来做到这一点?
Joh*_*ick 39
就个人而言,我认为[你链接到的]代码看起来有点混乱.警告:头编译代码如下.
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类,您可以轻松做到这一点。从创建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变量的路径
| 归档时间: | 
 | 
| 查看次数: | 18491 次 | 
| 最近记录: |