py.lib

Yohn Y. 2023-01-28 Parent:4f4cc2fc9805

43:6f8bea109183 Go to Latest

py.lib/type_utils/json_tools.py

. Наведение порядка в коде логирования

History
awgur@38 1 # coding: utf-8
awgur@38 2 from dataclasses import is_dataclass, asdict
awgur@38 3
awgur@38 4
awgur@38 5 def json_type_sanitizer(val):
awgur@38 6 """\
awgur@38 7 Преобразует значение ``val`` в пригодное для преобразования в json значение.
awgur@38 8 """
awgur@38 9
awgur@38 10 val_t = type(val)
awgur@38 11
awgur@38 12 if is_dataclass(val):
awgur@38 13 return json_type_sanitizer(asdict(val))
awgur@38 14
awgur@38 15 elif val_t in (int, float, str, bool) or val is None:
awgur@38 16 return val
awgur@38 17
awgur@38 18 elif val_t in (list, tuple):
awgur@38 19 return list(map(json_type_sanitizer, val))
awgur@38 20
awgur@38 21 elif val_t == dict:
awgur@38 22 return dict((key, json_type_sanitizer(d_val)) for key, d_val in val.items())
awgur@38 23
awgur@38 24 else:
awgur@38 25 return str(val)