From 3b371d31779506a68e88b33523c2f978467b353b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 3 Jul 2018 19:33:31 +0200 Subject: [PATCH] Ref T286, static JSON functions for container --- src/blackmisc/containerbase.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/blackmisc/containerbase.h b/src/blackmisc/containerbase.h index 0687c0e07..c76add068 100644 --- a/src/blackmisc/containerbase.h +++ b/src/blackmisc/containerbase.h @@ -142,9 +142,29 @@ namespace BlackMisc } //! Assign from JSON object string - void convertFromJson(const QString &jsonString) + void convertFromJson(const QString &jsonString, bool acceptCacheFormat = false) { - this->convertFromJson(Json::jsonObjectFromString(jsonString)); + if (jsonString.isEmpty()) { return; } + const QJsonObject jsonObject = Json::jsonObjectFromString(jsonString, acceptCacheFormat); + this->convertFromJson(jsonObject); + } + + //! Static version of convertFromJson + static Derived fromJson(const QJsonObject &json) + { + Derived derived; + derived.convertFromJson(json); + return derived; + } + + //! Static version of convertFromJson + static Derived fromJson(const QString &jsonString, bool acceptCacheJson = false) + { + Derived obj; + if (jsonString.isEmpty()) { return obj; } + const QJsonObject jsonObj = acceptCacheJson ? Json::swiftDataObjectValue(jsonString) : Json::jsonObjectFromString(jsonString); + obj.convertFromJson(jsonObj); + return obj; } //! Call convertFromJson, catch any CJsonException that is thrown and return it as CStatusMessage.