23 lines
592 B
Python
23 lines
592 B
Python
import json
|
|
import numpy as np
|
|
from pathlib import Path
|
|
|
|
|
|
class ExtendedJSONEncoder(json.JSONEncoder):
|
|
|
|
def default(self, obj):
|
|
if isinstance(obj, np.ndarray):
|
|
return obj.tolist()
|
|
elif isinstance(obj, np.generic): # covers all numpy scalars
|
|
return obj.item()
|
|
elif isinstance(obj, complex): # covers builtin complex
|
|
return {"real": obj.real, "imag": obj.imag}
|
|
elif isinstance(obj, Path):
|
|
return str(obj)
|
|
elif isinstance(obj, set):
|
|
return sorted(obj)
|
|
return super().default(obj)
|
|
|
|
|
|
|