我已经实现了一个代码,它将从 QLineEdit
获取输入,数据将以 json 文件格式保存。
void MainWindow::fileWriteOperationJson()
{
QString filename = "C:/Users/.../Documents/Qt/save.json";
QFile saveFile(filename);
saveFile.open(QIODevice::WriteOnly|QIODevice::Text);
if (!saveFile.open(QIODevice::WriteOnly))
{
qWarning("Couldn't open save file.");
}
QJsonObject obj; //this is the root
QJsonArray personalData;
QJsonObject json;
json["name"] = ui->nameLineEdit->text();
json["address"] = ui->addressLineEdit->toPlainText();
personalData.append(json);
obj["personalData"] = personalData;
QTextStream out(&saveFile);
out << QJsonDocument(obj).toJson(QJsonDocument::Indented);
}
问题:当我打开 json 文件时,我想找到以下格式的数据:
"name" = xyz
"address" = xyz
但是,我得到的结果是这样的,
"address" = xyz
"name" = xyz
如何得到这个预期的订单?
最佳答案
JSON (JavaScript Object Notation) is a lightweight data-interchange format因此,结构很重要,但项目的顺序并不重要。
如果您需要按特定顺序打印项目,您需要将它们从 Json 中提取到合适的数据结构中并自行处理。
或者,您可以保存为不同的格式,但请注意,Qt 的 XML 与 Json 的行为相同。也许是 CSV可能对您更有用。
关于c++ - QJson数据序列化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904676/