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)
|