我正在尝试学习如何使用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();
}
答案 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);