QT5解析嵌套Json
1、/* CJson.h */#include <QJsonDocument>#include <QJsonObject>#include <QJsonValue>class CJson{public: CJson(); QString decode(const QByteArray byteArray, QString key); QString getValueBykey(QJsonObject obj, QString key);private:};
2、/* CJson.cpp */#include <iostream>#include <QStringList>#include "cjson.h"CJson::CJson(){ // Do nothing.}QString CJson::decode(const QByteArray byteArray, QString key){ // Check input if ( byteArray.isEmpty() || 0 == key.compare("")) { return ""; } QString str = ""; QJsonParseError jsonError; QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray, &jsonError); if(jsonError.error == QJsonParseError::NoError) { if(jsonDoc.isObject()) { QJsonObject obj = jsonDoc.object(); // Loop get value according the key world str = getValueBykey(obj, key); } } return str;}QString CJson::getValueBykey(QJsonObject obj, QString key){ QString rst = ""; QStringList strList = obj.keys(); for (int i = 0; i < obj.size(); i++) { QJsonValue val = obj.value(strList.at(i)); if ( strList.at(i) == key && val.isString()) { rst = val.toString(); } else if (val.isObject()) { rst = getValueBykey(val.toObject(), key); } } return rst;}