Add _type attribute on all JSON objects, remove separate attribute on Twitter media

This commit is contained in:
JustAnotherArchivist
2021-05-22 18:14:54 +00:00
parent 97c8caea48
commit 460be9d581
2 changed files with 3 additions and 3 deletions

View File

@@ -36,11 +36,14 @@ def _json_serialise_datetime(obj):
def _json_dataclass_to_dict(obj):
if isinstance(obj, _JSONDataclass) or dataclasses.is_dataclass(obj):
out = {}
out['_type'] = f'{type(obj).__module__}.{type(obj).__name__}'
for field in dataclasses.fields(obj):
assert field.name != '_type'
out[field.name] = _json_dataclass_to_dict(getattr(obj, field.name))
# Add in (non-deprecated) properties
for k in dir(obj):
if isinstance(getattr(type(obj), k, None), property):
assert k != '_type'
out[k] = _json_dataclass_to_dict(getattr(obj, k))
return out
elif isinstance(obj, (tuple, list)):