• QT解析json


    QT解析json

    QJsonDocument结合QVariant进行解析

     1 {
     2     "bsType": 0,
     3     "setId": 1000,
     4     "mainInfo": [
     5         {
     6             "cpuType": "i7-8550",
     7             "coreNum": 8,
     8             "mainFrequency": "2.4GHz",
     9             "diskType": "Cme-China",
    10             "diskTotolSize": 1024,
    11             "disks":[   
    12                 {"diskName": "C:", "diskSize":256, "usedSize":120, "usedRatio":0.6, "uflag":0},
    13                 {"diskName": "D:", "diskSize":256, "usedSize":100, "usedRatio":0.2, "uflag":1},
    14                 {"diskName": "E:", "diskSize":512, "usedSize":300, "usedRatio":0.2, "uflag":0}
    15             ]                
    16         }
    17     ]
    18 }
    View Code

    解析json实例

     1 #include <QCoreApplication>
     2 #include <QFile>
     3 #include <QJsonDocument>
     4 #include <QVariantMap>
     5 #include <QDateTime>
     6 #include <QJsonObject>
     7 #include <QDebug>
     8 
     9 QByteArray readJson(const QString &jsonFile)
    10 {
    11     QFile file(jsonFile);
    12     if(file.open(QIODevice::ReadOnly) == false)
    13     {
    14         return QByteArray("");
    15     }
    16 
    17     QByteArray jsonStr = file.readAll();
    18     file.close();
    19     return jsonStr;
    20 }
    21 
    22 int main(int argc, char *argv[])
    23 {
    24     QCoreApplication a(argc, argv);
    25     QByteArray bytearray = readJson("./Untitled.json");
    26     QJsonParseError jsonErr;
    27     QJsonDocument jsonDoc = QJsonDocument::fromJson(bytearray, &jsonErr);
    28     if(jsonErr.error != QJsonParseError::NoError)
    29     {
    30         qDebug()<<QString::fromLocal8Bit("Json文件解析失败:");
    31         return a.exec();
    32     }
    33 // qDebug() << jsonDoc.toVariant().toMap()["mainInfo"];
    34 // QVariantMap jsonMap = jsonDoc.toVariant().toMap();//当前那一层是{}使用
    35 // QList<QVariant> MonitorList = jsonDoc.toVariant().toList();//当前那一层是数组[]的时候使用
    36     QList<QVariant> MonitorList = jsonDoc.toVariant().toMap()["mainInfo"].toList();
    37     for(auto &MonitorItem : MonitorList)
    38     {
    39         QVariantMap MonitorMap = MonitorItem.toMap();
    40         qDebug() << MonitorMap["cpuType"];
    41         qDebug() << MonitorMap["coreNum"];
    42         qDebug() << MonitorMap["mainFrequency"];
    43         qDebug() << MonitorMap["diskType"];
    44         qDebug() << MonitorMap["diskTotolSize"];
    45 // qDebug() << MonitorMap["disks"];
    46         QList<QVariant> slist = MonitorMap["disks"].toList();
    47         for (auto &item: slist)
    48         {
    49             QVariantMap sMap = item.toMap();
    50             qDebug() << sMap["diskName"];
    51             qDebug() << sMap["diskSize"];
    52             qDebug() << sMap["usedSize"];
    53             qDebug() << sMap["usedRatio"];
    54             qDebug() << sMap["uflag"];
    55         }
    56     }
    57     return a.exec();
    58 }
    View Code

    json的写入

    1 QVariantMap map;  
    2 map["address"] = QString("192.168.0.1");  
    3 map["name"] = QString("xie");  
    4 
    5 QString data = QJsonDocument::fromVariant(map).toJson(QJsonDocument::Indented);//带有格式。  
    6                                             QJsonDocument::Compact(没有格式)
    View Code
  • 相关阅读:
    java实现23种设计模式之中介者模式
    java实现23种设计模式之访问者模式
    java实现23种设计模式之状态模式
    java实现23种设计模式之备忘录模式
    java实现23种设计模式之命令模式
    java实现23种设计模式之责任链模式
    VS2012+OpenCV2.4.9+OpenTLD环境搭建
    Real-time Compressive Tracking
    OpenTLD相关资料
    华为面试题
  • 原文地址:https://www.cnblogs.com/huanyinglvtuan/p/11237780.html
Copyright © 2020-2023  润新知