INNER CODE UNIT · Python
_json_value
ok-oldking/ok-script · ok/ui/web/app.py:205
def _json_value(value: Any):
if value is None or isinstance(value, (bool, int, float, str)):
return value
if dataclasses.is_dataclass(value):
return _json_value(dataclasses.asdict(value))
if isinstance(value, dict):
return {str(key): _json_value(item) for key, item in value.items()}
if isinstance(value, (list, tuple)):
return [_json_value(item) for item in value]
if hasattr(value, "shape") and hasattr(value, "dtype"):
return {
"type": value.__class__.__name__,
"shape": list(value.shape),
"dtype": str(value.dtype),
}
if hasattr(value, "name"):
return {"name": str(value.name), "type": value.__class__.__name__}
return str(value)