From b6c49dda204f3844293356033e7ad46fc7411a3f Mon Sep 17 00:00:00 2001 From: Bent Witthold Date: Tue, 3 Feb 2026 11:55:43 +0100 Subject: [PATCH] Minor clean up in JsonParser. --- formats/jsonparser.cpp | 16 ++++++---------- formats/jsonparser.h | 2 +- genericcore.cpp | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/formats/jsonparser.cpp b/formats/jsonparser.cpp index 686f4bc..8ef90de 100644 --- a/formats/jsonparser.cpp +++ b/formats/jsonparser.cpp @@ -12,13 +12,13 @@ QList JsonParser::toItemValuesList(const QByteArray& jsonData, if (jsonData.isEmpty()) { return result; } + // TODO tidy up the following code and encapsulate into functions; - // NEXT tidy up the following code and encapsulate into functions; + QJsonDocument doc = QJsonDocument::fromJson(jsonData); - /// check if there is an array or there is only one object inside the root object; - // TODO ? rename objectName into jsonValueName? + /// case one: json value name in plural -> should contain an array of items if (rootValueName == ITEMS_KEY_STRING) { - QJsonArray itemArray = extractItemArray(jsonData, rootValueName); + QJsonArray itemArray = extractItemArray(doc, rootValueName); foreach (QJsonValue value, itemArray) { QJsonObject itemJsonObject = value.toObject(); @@ -26,9 +26,8 @@ QList JsonParser::toItemValuesList(const QByteArray& jsonData, result.append(values); } } + /// case two: json value name in singular -> should contain an object of one item if (rootValueName == ITEM_KEY_STRING) { - // QJsonArray itemArray = extractItemArray(jsonData, objectName); - QJsonDocument doc = QJsonDocument::fromJson(jsonData); QJsonObject rootObject = doc.object(); QJsonObject itemJsonObject = rootObject.value(rootValueName).toObject(); ModelItemValues values = jsonObjectToItemValues(itemJsonObject); @@ -73,17 +72,14 @@ QByteArray JsonParser::itemValuesListToJson(const QList& itemVa JsonParser::JsonParser() {} -QJsonArray JsonParser::extractItemArray(const QByteArray& jsonData, const QString& objectName) { - QJsonDocument doc = QJsonDocument::fromJson(jsonData); +QJsonArray JsonParser::extractItemArray(const QJsonDocument& doc, const QString& objectName) { QJsonArray itemArray; if (objectName.isEmpty()) { itemArray = doc.array(); - } else { QJsonObject rootObject = doc.object(); itemArray = rootObject.value(objectName).toArray(); } - return itemArray; } diff --git a/formats/jsonparser.h b/formats/jsonparser.h index a27d223..bb920fd 100644 --- a/formats/jsonparser.h +++ b/formats/jsonparser.h @@ -22,7 +22,7 @@ class JsonParser { private: explicit JsonParser(); - static QJsonArray extractItemArray(const QByteArray& jsonData, const QString& objectName); + static QJsonArray extractItemArray(const QJsonDocument& doc, const QString& objectName); static ModelItemValues jsonObjectToItemValues(const QJsonObject& itemJsonObject); static pair getKeyValuePair(const QJsonObject& itemJsonObject, const int role); diff --git a/genericcore.cpp b/genericcore.cpp index 1d0eaba..dcba36f 100644 --- a/genericcore.cpp +++ b/genericcore.cpp @@ -162,7 +162,7 @@ void GenericCore::onSendItemTriggered(const QByteArray& jsonData) { void GenericCore::onItemsFetched(const QByteArray jsonData) { emit displayStatusMessage("New items fetched."); // TODO ? check compability of JSON structure beforehand? - // NEXT check if item already exists ? ; + // NEXT check if item already exists and apply changes (UUID,...) ? ; m_mainModel->appendItems(jsonData); }