如何从文件加载QJsonDocument

时间:2019-07-01 20:15:26

标签: c++ json qt

我正在尝试学习如何使用JSON和Qt,但是我从文件中获取QJsonDocument时遇到问题,该文件可以正确打开,我也可以使用qDebug()查看文件内容,但是从该文件创建的QJsonDocument始终为空

 if(stdButton==QDialogButtonBox::Ok)
    {
       qDebug()<<"accept button clicked";

       QFile userList;

       userList.setFileName("users.json");
       userList.open(QIODevice::ReadOnly);

       //using this qDebug i'm able to see files content
       qDebug()<<QJsonDocument::fromJson(userList.readAll());

       //but this QJsonDocument is always empty
       QJsonDocument userDoc;
       userDoc=QJsonDocument::fromJson(userList.readAll());
       if(userDoc.isEmpty())
       {
           qDebug()<<"userDoc is empty";
       }
       qDebug()<<userDoc;
       accept();
    }

1 个答案:

答案 0 :(得分:1)

//but this QJsonDocument is always empty
QJsonDocument userDoc;
userDoc=QJsonDocument::fromJson(userList.readAll());

那是因为没有文件可读取,因为您在上一次对readAll()的调用中已经读取了文件的所有内容。

您可以存储来自userList.readAll()的数据并重复使用。

QFile userList;

userList.setFileName("users.json");
userList.open(QIODevice::ReadOnly);

QByteArray data = userList.readAll();
qDebug()<<QJsonDocument::fromJson(data);

QJsonDocument userDoc;
userDoc=QJsonDocument::fromJson(data);