16 lines
488 B
Python
16 lines
488 B
Python
|
import dataclasses
|
||
|
import json
|
||
|
from typing import Any
|
||
|
|
||
|
|
||
|
class ClanJSONEncoder(json.JSONEncoder):
|
||
|
def default(self, o: Any) -> Any:
|
||
|
# Check if the object has a to_json method
|
||
|
if hasattr(o, "to_json") and callable(o.to_json):
|
||
|
return o.to_json()
|
||
|
# Check if the object is a dataclass
|
||
|
elif dataclasses.is_dataclass(o):
|
||
|
return dataclasses.asdict(o)
|
||
|
# Otherwise, use the default serialization
|
||
|
return super().default(o)
|