Source code for bungieapi.json
import functools as ft
import typing as t
from enum import Enum
[docs]def to_json(obj: t.Any) -> t.Any:
if not obj:
return None
if hasattr(obj, "to_json"):
data = obj.to_json()
if isinstance(data, dict):
data = {k: v for k, v in data.items() if v}
return data
return to_json_for_simple(obj)
[docs]@ft.singledispatch
def to_json_for_simple(obj: t.Any) -> t.Any:
return obj
[docs]@to_json_for_simple.register
def to_json_array(xs: list) -> t.Sequence:
return [to_json(x) for x in xs]
[docs]@to_json_for_simple.register
def to_json_dict(obj: dict) -> t.Mapping:
return {k: to_json(v) for k, v in obj}
[docs]@to_json_for_simple.register
def to_json_enum(obj: Enum) -> t.Any:
return to_json(obj.value)