Вы можете прочитать файл и разобрать его следующим образом:
QFile file("haccp.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
auto jsonDoc = QJsonDocument::fromJson(file.readAll()).object();
file.close();
CSV может быть написано так, обратите внимание на флаг QIODevice::Truncate
.
QFile csv("haccp.csv");
csv.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate);
QTextStream out(&csv);
// CSV Header
out << "Type,Date,Start,End,Time,Steam Mode,Phase,Chamber RD,Chamber SP,Core RD,Core SP";
endl(out);
for (auto d : json.value("details").toArray()) {
auto detail = d.toObject();
out << json.value("type").toString() << ',';
out << json.value("date").toString() << ',';
out << json.value("start").toString() << ',';
out << json.value("end").toString() << ',';
out << detail.value("time").toString() << ',';
out << detail.value("steam_mode").toString() << ',';
out << detail.value("phase").toString() << ',';
out << detail.value("chamber_rd").toString() << ',';
out << detail.value("chamber_sp").toString() << ',';
out << detail.value("core_rd").toString() << ',';
out << detail.value("core_sp").toString() << ',';
endl(out);
}
csv.close();
Ваш пример json будет производить этот CSV:
Type,Date,Start,End,Time,Steam Mode,Phase,Chamber RD,Chamber SP,Core RD,Core SP
Manual,20 giu 2019,17:58,17:59,17:58,Conv,1,0,180,0,--,
Manual,20 giu 2019,17:58,17:59,17:58,Conv,1,0,180,0,--,