diff options
Diffstat (limited to 'gn2/utility/json')
-rw-r--r-- | gn2/utility/json/__init__.py | 3 | ||||
-rw-r--r-- | gn2/utility/json/encoders.py | 17 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gn2/utility/json/__init__.py b/gn2/utility/json/__init__.py new file mode 100644 index 00000000..b1141a34 --- /dev/null +++ b/gn2/utility/json/__init__.py @@ -0,0 +1,3 @@ +"""Local JSON utilities.""" + +from .encoders import CustomJSONEncoder diff --git a/gn2/utility/json/encoders.py b/gn2/utility/json/encoders.py new file mode 100644 index 00000000..7c5839ac --- /dev/null +++ b/gn2/utility/json/encoders.py @@ -0,0 +1,17 @@ +"""Custom JSON encoders""" +from uuid import UUID +from json import JSONEncoder + +# Do not use this `__ENCODERS__` variable outside of this module. +__ENCODERS__ = { + UUID: lambda obj: str(obj) +} + +class CustomJSONEncoder(JSONEncoder): + """Custom JSONEncoder class.""" + def default(self, obj): + """Serialise `obj` to a JSON representation.""" + obj_type = type(obj) + if obj_type in __ENCODERS__: + return __ENCODERS__[obj_type](obj) + return JSONEncoder.default(self, obj) |