Qt parsing JSON using QJsonDocument, QJsonObject, QJsonArray Qt parsing JSON using QJsonDocument, QJsonObject, QJsonArray json json

Qt parsing JSON using QJsonDocument, QJsonObject, QJsonArray


I figured it out:

QStringList propertyNames;QStringList propertyKeys;QString strReply = (QString)reply->readAll();QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8());QJsonObject jsonObject = jsonResponse.object();QJsonArray jsonArray = jsonObject["properties"].toArray();foreach (const QJsonValue & value, jsonArray) {    QJsonObject obj = value.toObject();    propertyNames.append(obj["PropertyName"].toString());    propertyKeys.append(obj["key"].toString());}


Here is an example from How To Manipulate JSON With C++ and Qt.

// reads a json file from disk to QVariantMap// originally from http://erickveil.github.io/2016/04/06/How-To-Manipulate-JSON-With-C++-and-Qt.htmlbool readJsonFile(std::string file_path, QVariantMap& result){    // step 1    QFile file_obj(QString::fromStdString(file_path));    if (!file_obj.open(QIODevice::ReadOnly)) {    std::cout << "Failed to open " << file_path << std::endl;    exit(1);    }    // step 2    QTextStream file_text(&file_obj);    QString json_string;    json_string = file_text.readAll();    file_obj.close();    QByteArray json_bytes = json_string.toLocal8Bit();    // step 3    auto json_doc = QJsonDocument::fromJson(json_bytes);    if (json_doc.isNull()) {        std::cout << "Failed to create JSON doc." << std::endl;        return false;    }    if (!json_doc.isObject()) {        std::cout << "JSON is not an object." << std::endl;        return false;    }    QJsonObject json_obj = json_doc.object();    if (json_obj.isEmpty()) {        std::cout << "JSON object is empty." << std::endl;        return false;    }    // step 4    result = json_obj.toVariantMap();    return true;}// writes a QVariantMap to diskbool writeJsonFile(QVariantMap point_map, std::string file_path){    QJsonObject json_obj = QJsonObject::fromVariantMap(point_map);    QJsonDocument json_doc(json_obj);    QString json_string = json_doc.toJson();    QFile save_file(QString::fromStdString(file_path));    if (!save_file.open(QIODevice::WriteOnly)) {        std::cout << "failed to open save file" << std::endl;        return false;    }    save_file.write(json_string.toLocal8Bit());    save_file.close();    return true;}