diff --git a/formats/jsonparser.cpp b/formats/jsonparser.cpp index 6b7e80d..dc08ff4 100644 --- a/formats/jsonparser.cpp +++ b/formats/jsonparser.cpp @@ -57,30 +57,19 @@ QJsonObject JsonParser::itemValuesToJsonObject(const ModelItemValues& itemValues QJsonObject result; // TODO add dates (entry, modification, end) - const UserRoles idRole = IdRole; - const QString roleName = ROLE_NAMES.value(idRole); - const QVariant idValue = itemValues.value(idRole); + const UserRoles idRole = IdRole; + const QJsonValue idValue = extractJsonValue(itemValues, idRole); if (!idValue.isNull()) { const QString idRoleName = ROLE_NAMES.value(idRole); - result.insert(idRoleName, idValue.toString()); + result.insert(idRoleName, idValue); } QListIterator i(USER_FACING_ROLES); while (i.hasNext()) { - const UserRoles role = i.next(); - const QString roleName = ROLE_NAMES.value(role); - const QVariant value = itemValues.value(role); - if (STRING_ROLES.contains(role)) { - result.insert(roleName, value.toString()); - } else if (INT_ROLES.contains(role)) { - result.insert(roleName, value.toInt()); - } else if (DOUBLE_ROLES.contains(role)) { - result.insert(roleName, value.toDouble()); - } else if (TYPE_ROLES.contains(role)) { - result.insert(roleName, value.toString()); - } else { - qCritical() << QString("Can't find data type for role %1!!!").arg(role); - } + const UserRoles role = i.next(); + const QJsonValue jsonValue = extractJsonValue(itemValues, role); + const QString roleName = ROLE_NAMES.value(role); + result.insert(roleName, jsonValue); } return result; } @@ -134,3 +123,21 @@ pair JsonParser::getKeyValuePair(const QJsonObject& itemJsonObjec } return pair(role, result); } + +QJsonValue JsonParser::extractJsonValue(const ModelItemValues& itemValues, const int role) { + QJsonValue result; + const QString roleName = ROLE_NAMES.value(role); + const QVariant value = itemValues.value(role); + if (STRING_ROLES.contains(role)) { + result = value.toString(); + } else if (INT_ROLES.contains(role)) { + result = value.toInt(); + } else if (DOUBLE_ROLES.contains(role)) { + result = value.toDouble(); + } else if (TYPE_ROLES.contains(role)) { + result = value.toString(); + } else { + qCritical() << QString("Can't find data type for role %1!!!").arg(role); + } + return result; +} diff --git a/formats/jsonparser.h b/formats/jsonparser.h index 428673c..ba2a95f 100644 --- a/formats/jsonparser.h +++ b/formats/jsonparser.h @@ -27,6 +27,8 @@ class JsonParser { static ModelItemValues jsonObjectToItemValues(const QJsonObject& itemJsonObject); static pair getKeyValuePair(const QJsonObject& itemJsonObject, const int role); + + static QJsonValue extractJsonValue(const ModelItemValues& itemValues, const int role); }; #endif // JSONPARSER_H