c++ - QJson数据序列化顺序

标签 c++ json qt

我已经实现了一个代码,它将从 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/

相关文章:

c# - 如何将 C# 对象引用传入和传出 C++

c++ - boost 的托管内存中的内存对齐约束

c++ - 存储未扩展的参数包

c# - 在ASP.NET MVC中解析JSON文件并在网页中显示数据

c++ - Qt 对话框如何从函数中触发 accept() 和 reject()

c++ - decltype 的 const 限定符

java - 使用 Fql 并尝试使用 JSON 解析结果

javascript - 如何循环遍历所有对象数组?

c++ - 通过 unix 信号优雅地终止 Qt 应用程序

c++ - 如何运行多个 QTest 类?