Minor clean up in JsonParser.

This commit is contained in:
2026-02-03 11:55:43 +01:00
parent 7ae10e6ed7
commit b6c49dda20
3 changed files with 8 additions and 12 deletions

View File

@ -12,13 +12,13 @@ QList<ModelItemValues> JsonParser::toItemValuesList(const QByteArray& jsonData,
if (jsonData.isEmpty()) { if (jsonData.isEmpty()) {
return result; 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; /// case one: json value name in plural -> should contain an array of items
// TODO ? rename objectName into jsonValueName?
if (rootValueName == ITEMS_KEY_STRING) { if (rootValueName == ITEMS_KEY_STRING) {
QJsonArray itemArray = extractItemArray(jsonData, rootValueName); QJsonArray itemArray = extractItemArray(doc, rootValueName);
foreach (QJsonValue value, itemArray) { foreach (QJsonValue value, itemArray) {
QJsonObject itemJsonObject = value.toObject(); QJsonObject itemJsonObject = value.toObject();
@ -26,9 +26,8 @@ QList<ModelItemValues> JsonParser::toItemValuesList(const QByteArray& jsonData,
result.append(values); result.append(values);
} }
} }
/// case two: json value name in singular -> should contain an object of one item
if (rootValueName == ITEM_KEY_STRING) { if (rootValueName == ITEM_KEY_STRING) {
// QJsonArray itemArray = extractItemArray(jsonData, objectName);
QJsonDocument doc = QJsonDocument::fromJson(jsonData);
QJsonObject rootObject = doc.object(); QJsonObject rootObject = doc.object();
QJsonObject itemJsonObject = rootObject.value(rootValueName).toObject(); QJsonObject itemJsonObject = rootObject.value(rootValueName).toObject();
ModelItemValues values = jsonObjectToItemValues(itemJsonObject); ModelItemValues values = jsonObjectToItemValues(itemJsonObject);
@ -73,17 +72,14 @@ QByteArray JsonParser::itemValuesListToJson(const QList<ModelItemValues>& itemVa
JsonParser::JsonParser() {} JsonParser::JsonParser() {}
QJsonArray JsonParser::extractItemArray(const QByteArray& jsonData, const QString& objectName) { QJsonArray JsonParser::extractItemArray(const QJsonDocument& doc, const QString& objectName) {
QJsonDocument doc = QJsonDocument::fromJson(jsonData);
QJsonArray itemArray; QJsonArray itemArray;
if (objectName.isEmpty()) { if (objectName.isEmpty()) {
itemArray = doc.array(); itemArray = doc.array();
} else { } else {
QJsonObject rootObject = doc.object(); QJsonObject rootObject = doc.object();
itemArray = rootObject.value(objectName).toArray(); itemArray = rootObject.value(objectName).toArray();
} }
return itemArray; return itemArray;
} }

View File

@ -22,7 +22,7 @@ class JsonParser {
private: private:
explicit JsonParser(); 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 ModelItemValues jsonObjectToItemValues(const QJsonObject& itemJsonObject);
static pair<int, QVariant> getKeyValuePair(const QJsonObject& itemJsonObject, const int role); static pair<int, QVariant> getKeyValuePair(const QJsonObject& itemJsonObject, const int role);

View File

@ -162,7 +162,7 @@ void GenericCore::onSendItemTriggered(const QByteArray& jsonData) {
void GenericCore::onItemsFetched(const QByteArray jsonData) { void GenericCore::onItemsFetched(const QByteArray jsonData) {
emit displayStatusMessage("New items fetched."); emit displayStatusMessage("New items fetched.");
// TODO ? check compability of JSON structure beforehand? // 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); m_mainModel->appendItems(jsonData);
} }