From af64d24d5224d05eddd2cd94a002d9eb72c549a0 Mon Sep 17 00:00:00 2001 From: Goffi Date: Sat, 1 Dec 2018 09:59:48 +0100 Subject: [PATCH] tools (common/data_format): serialise now check types and return a default value when empty string is parsed. --- sat/tools/common/data_format.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sat/tools/common/data_format.py b/sat/tools/common/data_format.py index 736a4838..e352380a 100644 --- a/sat/tools/common/data_format.py +++ b/sat/tools/common/data_format.py @@ -133,10 +133,19 @@ def serialise(data): """ return json.dumps(data, ensure_ascii=False) -def deserialise(serialised_data): +def deserialise(serialised_data, default=None, type_check=dict): """Deserialize data from bridge @param serialised_data(unicode): data to deserialise + @default (object): value to use when serialised data is empty string + @param type_check(type): if not None, the deserialised data must be of this type @return(object): deserialised data + @raise ValueError: serialised_data is of wrong type """ - return json.loads(serialised_data) + if serialised_data == u"": + return default + ret = json.loads(serialised_data) + if type_check is not None and not isinstance(ret, type_check): + raise ValueError(u"Bad data type, was expecting {type_check}, got {real_type}" + .format(type_check=type_check, real_type=type(ret))) + return ret