From c01a662dc401ccec6b263bd87dcd967f33acd3e8 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Fri, 26 Feb 2021 21:30:15 +0100 Subject: [PATCH] much simpler NumpyJSONEncoder --- slic/utils/json.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/slic/utils/json.py b/slic/utils/json.py index 36eb1620..fcaeeeb7 100644 --- a/slic/utils/json.py +++ b/slic/utils/json.py @@ -5,16 +5,12 @@ import numpy as np class NumpyJSONEncoder(json.JSONEncoder): def default(self, obj): - if isinstance(obj, np.integer): - return int(obj) - elif isinstance(obj, np.floating): - return float(obj) - elif isinstance(obj, (np.complexfloating, complex)): # also cover complex builtin - return {"real": obj.real, "imag": obj.imag} - elif isinstance(obj, np.bool_): - return bool(obj) - elif isinstance(obj, np.ndarray): + 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} return super().default(obj)