QtでのJsonデータの解析方法

2055 ワード

Qt5            Json    ,    QJsonValue,QJsonArray,QJsonObject,QJsonDocument 。            C++      Json     ,  Json             。

QJsonValueクラスは、すべてのタイプのJsonデータを保存するために使用され、Jsonデータを次の6つの基本タイプに分類します.
bool QJsonValue::Bool
double QJsonValue::Double
string QJsonValue::String
array QJsonValue::Array
object QJsonValue::Object
null QJsonValue::Null

したがってQJsonValueは上記の6種類のJsonデータを保存し,対応するC++クラスを変換することができる.次の例
    QJsonValue qJsnVal;
    if(qJsnVal.isBool()){
        //       ,    C++ bool  
        bool bValue = qJsnVal.toBool();
    }else if(qJsnVal.isDouble()){
        //       ,    C++ double  
        double dValue = qJsnVal.toDouble();
        //      int  
        int iValue = qJsnVal.toInt();
    }else if(qJsnVal.isString()){
        //        ,    QStrint    
        QString qStrValue = qJsnVal.toString();
    }else if(qJsnVal.isObject()){
        //   Json  ,    QJsonObject    
        QJsonObject qJsnObj = qJsnVal.toObject();
    }else if(qJsnVal.isArray()){
        //   Json  ,    QJsonArray    
        QJsonArray qJsnArr = qJsnVal.toArray();
    }else if(qJsnVal.isNull()){
        //       js  null  
    }else if(qJsnVal.isUndefined()){
        //       js  undefined  
    }

QJsonObjectクラスは、jsonオブジェクトの値を解析するために使用されます.主にinsert、value、takeなどが一般的です.
QJsonObject qjsonObj;
    qjsonObj.insert("key1", "value1");  //insert         QJsonValue  ,             json  
    qjsonObj.insert("key2", 3.14);
    qjsonObj.insert("key3", true);
    //  qjsonObj    :{key1:"value", key2:3.14, key3: true}

    QString value1 = qjsonObj.value("key1").toString(); //value1  "value1"
    //QJsonObjec value     json        ,       ,    
    //qjsonObj      :{key1:"value", key2:3.14, key3: true}

    bool value3 = qjsonObj.take("key3").toBool();   //value3  true
    //QJsonObjec take     json        ,      ,    
    //qjsonObj      :{key1:"value", key2:3.14}