Análisis de JSON con Qt

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

Etiquetas: Qt json QJsonDocument QVariant C++

Publicado el 6-3 01:09