Análisis de JSON en Qt
QJsonDocument combinado con QVariant para el procesamiento
{
"tipoEquipo": 1,
"idSistema": 2000,
"datosPrincipales": [
{
"procesador": "AMD Ryzen 9",
"nucleos": 16,
"frecuencia": "3.8GHz",
"tipoDisco": "Samsung-SSD",
"capacidadTotal": 2048,
"unidades":[
{"nombreUnidad": "C:", "tamano":512, "usado":300, "porcentajeUso":0.6, "estado":0},
{"nombreUnidad": "D:", "tamano":1024, "usado":500, "porcentajeUso":0.3, "estado":1},
{"nombreUnidad": "E:", "tamano":256, "usado":100, "porcentajeUso":0.2, "estado":0}
]
}
]
}
Ver CódigoEjemplo de procesamiento de JSONN
#include <QCoreApplication>
#include <QFile>
#include <QJsonDocument>
#include <QVariantMap>
#include <QDateTime>
#include <QJsonObject>
#include <QDebug>
QByteArray leerArchivoJson(const QString &rutaArchivo)
{
QFile archivo(rutaArchivo);
if(archivo.open(QIODevice::ReadOnly) == false)
{
return QByteArray("");
}
QByteArray contenidoJson = archivo.readAll();
archivo.close();
return contenidoJson;
}
int main(int argc, char *argv[])
{
QCoreApplication aplicacion(argc, argv);
QByteArray bytesJson = leerArchivoJson("./datosSistema.json");
QJsonParseError errorJson;
QJsonDocument documentoJson = QJsonDocument::fromJson(bytesJson, &errorJson);
if(errorJson.error != QJsonParseError::NoError)
{
qDebug()<<QString::fromLocal8Bit("Fallo al analizar el archivo Json:");
return aplicacion.exec();
}
QList<QVariant> listaComponentes = documentoJson.toVariant().toMap()["datosPrincipales"].toList();
for(auto &componente : listaComponentes)
{
QVariantMap mapaComponente = componente.toMap();
qDebug() << "Procesador:" << mapaComponente["procesador"];
qDebug() << "Núcleos:" << mapaComponente["nucleos"];
qDebug() << "Frecuencia:" << mapaComponente["frecuencia"];
qDebug() << "Tipo de disco:" << mapaComponente["tipoDisco"];
qDebug() << "Capacidad total:" << mapaComponente["capacidadTotal"];
QList<QVariant> listaUnidades = mapaComponente["unidades"].toList();
for (auto &unidad: listaUnidades)
{
QVariantMap mapaUnidad = unidad.toMap();
qDebug() << "Unidad:" << mapaUnidad["nombreUnidad"];
qDebug() << "Tamaño:" << mapaUnidad["tamano"];
qDebug() << "Usado:" << mapaUnidad["usado"];
qDebug() << "Porcentaje de uso:" << mapaUnidad["porcentajeUso"];
qDebug() << "Estado:" << mapaUnidad["estado"];
}
}
return aplicacion.exec();
}
Ver CódigoEscritura de JSON
QVariantMap mapaDatos;
mapaDatos["ubicacion"] = QString("192.168.1.100");
mapaDatos["usuario"] = QString("admin");
QString jsonResultado = QJsonDocument::fromVariant(mapaDatos).toJson(QJsonDocument::Indented);//con formato
QJsonDocument::Compact(sin formato)
Ver Código