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}