diff --git a/src/blackcore/db/databaseauthentication.cpp b/src/blackcore/db/databaseauthentication.cpp index 6f962a7e7..306c96a1b 100644 --- a/src/blackcore/db/databaseauthentication.cpp +++ b/src/blackcore/db/databaseauthentication.cpp @@ -126,7 +126,7 @@ namespace BlackCore CLogMessage(this).error("Authentication failed, no response from %1") << urlString; return; } - if (!json.startsWith('{') || !json.endsWith('}')) + if (!Json::looksLikeJson(json)) { CLogMessage(this).error("Illegal JSON object: %1") << CNetworkUtils::removeHtmlPartsFromPhpErrorMessage(json); return; diff --git a/src/blackmisc/json.cpp b/src/blackmisc/json.cpp index 82312c317..9fb7f465b 100644 --- a/src/blackmisc/json.cpp +++ b/src/blackmisc/json.cpp @@ -56,7 +56,7 @@ const QJsonValue &operator >>(const QJsonValue &json, QString &value) const QJsonValue &operator >>(const QJsonValue &json, QStringList &value) { - for (auto &&element : json.toArray()) { value << element.toString(); } + for (auto && element : json.toArray()) { value << element.toString(); } return json; } @@ -130,7 +130,7 @@ const QJsonValueRef &operator >>(const QJsonValueRef &json, QString &value) const QJsonValueRef &operator >>(const QJsonValueRef &json, QStringList &value) { - for (auto &&element : json.toArray()) { value << element.toString(); } + for (auto && element : json.toArray()) { value << element.toString(); } return json; } @@ -404,7 +404,7 @@ namespace BlackMisc { if (toBeAppended.isEmpty()) return target; QStringList keys = toBeAppended.keys(); - foreach(const QString & key, keys) + foreach (const QString &key, keys) { target.insert(key, toBeAppended.value(key)); } @@ -449,5 +449,18 @@ namespace BlackMisc } return currentObject; } + + bool looksLikeJson(const QString &json) + { + if (json.isEmpty()) { return false; } + const QString t = json.trimmed(); + return t.startsWith('{') && t.endsWith('}'); + } + + bool looksLikeSwiftJson(const QString &json) + { + // further checks would go here + return looksLikeJson(json); + } } } diff --git a/src/blackmisc/json.h b/src/blackmisc/json.h index e90c1add6..07c876b14 100644 --- a/src/blackmisc/json.h +++ b/src/blackmisc/json.h @@ -250,6 +250,14 @@ namespace BlackMisc //! Merges an incremental json object into an existing one BLACKMISC_EXPORT QJsonObject applyIncrementalObject(const QJsonObject &previousObject, const QJsonObject &incrementalObject); + //! Looks like swift JSON? + //! \remark Quick check if the string could be a valid JSON string + BLACKMISC_EXPORT bool looksLikeJson(const QString &json); + + //! Looks like swift JSON? + //! \remark Quick check if the string could be a valid swift JSON string + BLACKMISC_EXPORT bool looksLikeSwiftJson(const QString &json); + /*! * Load JSON file and init by that */