我正在尝试学习如何使用 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

  • 有没有更简单的方法可以做到这一点?

    最佳答案

    无需转换为字符串再返回。使用QSettingsQVariant类,您可以轻松地做到这一点。从QVariant创建QJsonDocument对象,并将其保存为QSettings。查看函数QJsonDocument::fromVariantQJsonDocument::toVariant。将它们与QSettings类(特别是void QSettings::setValue ( const QString & key, const QVariant & value )方法)结合起来,就可以与QVariant很好地工作。

    另外QSettings类具有此构造函数QSettings::QSettings ( const QString & fileName, Format format, QObject * parent = 0 )
    这将允许您设置文件的路径-fileName变量

    10-08 08:56