# HG changeset patch # User Goffi # Date 1543654788 -3600 # Node ID fcc945537d5f7c421d1432272c0000b82800bdcd # Parent 5849dcaab99d65aa25f2514ce26b7333c456be0d tools (common/data_format): serialise now check types and return a default value when empty string is parsed. diff -r 5849dcaab99d -r fcc945537d5f sat/tools/common/data_format.py --- a/sat/tools/common/data_format.py Sat Dec 01 09:57:25 2018 +0100 +++ b/sat/tools/common/data_format.py Sat Dec 01 09:59:48 2018 +0100 @@ -133,10 +133,19 @@ """ 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