从 JSON 读取和保存数据
Reading and saving data from a Json
我有一个.json文档,其中包含来自我的程序的数据,我想在其中重新加载。它看起来像这样:
{
"0 - Demanda": 100,
"0.1 - Ref. Temporal Demanda": "Mensual",
"1 - Tiempo de Suministro": 2,
"1.1 - Ref. Temporal Ts": "Diario",
"2 - Coste de Posesion": 20,
"2.1 - Ref. Temporal Cp": "Semanal",
"2.2 - Tipo de Coste de Posesion": "Dependiente",
"3 - Coste Unitario de Emision": 20,
"4 - Precio Unitario de compra": 30
}
为了获得这些数据,我已经填写了相应的QLineEdit,QComboBox和QCheckBox,现在我想读取我使用以下代码生成的文件:
void WResultados_Basico::on_pushButtonGuardar_clicked()
{
QJsonObject recordObject;
recordObject.insert("0 - Demanda", QJsonValue::fromVariant(d.demanda_original)); //d.anything is class with data
recordObject.insert("0.1 - Ref. Temporal Demanda", QJsonValue::fromVariant(d.ref_demanda));
recordObject.insert("1 - Tiempo de Suministro", QJsonValue::fromVariant(d.Ts_original));
recordObject.insert("1.1 - Ref. Temporal Ts", QJsonValue::fromVariant(d.ref_Ts));
recordObject.insert("2 - Coste de Posesion", QJsonValue::fromVariant(d.Cp_original));
recordObject.insert("2.1 - Ref. Temporal Cp", QJsonValue::fromVariant(d.ref_Cp));
recordObject.insert("2.2 - Tipo de Coste de Posesion", QJsonValue::fromVariant(d.Tipo_Cp));
recordObject.insert("3 - Coste Unitario de Emision", QJsonValue::fromVariant(d.Ce));
recordObject.insert("4 - Precio Unitario de compra", QJsonValue::fromVariant(d.PrecioUCompra));
QJsonDocument doc(recordObject);
qDebug() << doc.toJson();
QByteArray ba=doc.toJson();
QFile fid;
fid.setFileName("DatosBasico.json");
if (fid.open(QIODevice::WriteOnly))
{
fid.write(ba);
fid.close();
}
}
因此,我的目标是用我读取的数据重新填充相应的 ComboBox 等。也许这样的事情可以工作,但我不知道如何为每个单独的值分配一个变量:
{
QFile fid;
QByteArray ba;
fid.open("DatosBasico.json"::ReadOnly);
ba=fid.readAll();
doc.fromByteArray(ba);
fid.close();
}
感谢您的帮助和耐心
我最终这样做了,它有效,看起来很可怕,而且可能超级无能为力,但是......它:)工作
void Basico::on_pushButtonCargar_clicked()
{
QFile file("DatosBasico.json");
//Leer el archivoo que tiene el Json
if(!file.open(QFile::ReadOnly)){
qDebug()<< "Error, No se puede abrir el fichero.";
return;
}
QJsonDocument jsonDoc = QJsonDocument::fromJson(file.readAll());
d.demanda = jsonDoc.object().value("0 - Demanda").toDouble();
d.ref_demanda = jsonDoc.object().value("0.1 - Ref. Temporal Demanda").toString();
d.Ts = jsonDoc.object().value("1 - Tiempo de Suministro").toDouble();
d.ref_Ts = jsonDoc.object().value("1.1 - Ref. Temporal Ts").toString();
d.Cp = jsonDoc.object().value("2 - Coste de Posesion").toDouble();
d.ref_Cp = jsonDoc.object().value("2.1 - Ref. Temporal Cp").toString();
d.Tipo_Cp = jsonDoc.object().value("2.2 - Tipo de Coste de Posesion").toString();
d.Ce = jsonDoc.object().value("3 - Coste Unitario de Emision").toDouble();
d.PrecioUCompra = jsonDoc.object().value("4 - Precio Unitario de compra").toDouble();
file.close();
QString demanda_cargada=QString::number(d.demanda);
ui->lineEditDemanda->setText(demanda_cargada);
ui->comboBoxDemanda->setCurrentText(d.ref_demanda);
QString Ts_cargado=QString::number(d.Ts);
ui->lineEditTS->setText(Ts_cargado);
ui->comboBoxTS->setCurrentText(d.ref_Ts);
QString Cp_cargado=QString::number(d.Cp);
ui->lineEditCP->setText(Cp_cargado);
ui->comboBoxCP->setCurrentText(d.ref_Cp);
if (d.Tipo_Cp == "Dependiente")
{
ui->checkBoxDependiente->click();
}
if (d.Tipo_Cp == "Independiente")
{
ui->checkBoxIndependiente->click();
}
QString CE_cargado=QString::number(d.Ce);
ui->lineEditCe->setText(CE_cargado);
QString PUC_cargado=QString::number(d.PrecioUCompra);
ui->lineEditPrecioUCompra->setText(PUC_cargado);
}
相关文章:
- 如何使用自定义流操纵器在类实例中保存数据
- 从 JSON 读取和保存数据
- 我无法使用C ++以二进制模式保存数据
- 在窗口关机时保存数据
- C++VTK从多个文件中读取和保存数据
- 如何读取特定的第一个字符并按C++保存数据
- 永久保存数据
- 如何打印结构矢量?它不是在保存数据吗
- QtT 如何在 QMainWindow 中更改中央小部件时保存数据/状态
- 从旋转框保存数据
- 如果保存数据,libz 压缩将失败
- 如果设置APP_OPTIM:=release,SharedPreferences将无法保存数据
- 从文件中读取数据并保存数据以供以后搜索、插入等的方法
- 保存数据以便在体素编辑器中重复使用的最佳方式
- mysql_query无法正确保存数据
- 添加,保存数据从MFC应用程序(Visual Studio 2015)到SQL Server
- Qt -如何为我的应用程序保存数据
- Windows Phone 8保存数据
- 在执行多线程处理时保存数据
- 二进制文件没有正确保存数据