# -*- coding: utf-8 -*- """自定义 JSON 编码器。 按 ARCHITECTURE.md Phase 3 拆分建议,从 ``common/Utils.py`` 迁出。 类型:RULE FRAMEWORK(可由 AI 起草,必须人工维护)。 原位置:``common/Utils.py`` 第 87-102 行。 ``common/Utils.py`` 仍 re-export ``MyEncoder``,老 import 不受影响。 """ from __future__ import absolute_import import json try: import numpy as np except ImportError: # pragma: no cover np = None __all__ = ["MyEncoder"] class MyEncoder(json.JSONEncoder): """支持 numpy ndarray / scalar / bytes 的 JSON 编码器。""" def __init__(self): import numpy as _np global np np = _np def default(self, obj): if isinstance(obj, np.ndarray): return obj.tolist() elif isinstance(obj, bytes): return str(obj, encoding='utf-8') elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)): return float(obj) elif isinstance(obj, (np.int64, np.int32)): return int(obj) return json.JSONEncoder.default(self, obj)