JSON 직렬화 안정화

This commit is contained in:
2026-06-15 02:38:00 +09:00
parent 2439980730
commit b9ab67c1c2
2 changed files with 16 additions and 5 deletions
+13 -2
View File
@@ -115,7 +115,7 @@ def clean_scalar(value: Any) -> Any:
return None
if isinstance(value, float) and math.isnan(value):
return None
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date)):
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date, dt.time)):
return value.isoformat()
if hasattr(value, "item"):
try:
@@ -125,6 +125,17 @@ def clean_scalar(value: Any) -> Any:
return value
def _json_default(value: Any) -> Any:
if isinstance(value, (pd.Timestamp, dt.datetime, dt.date, dt.time)):
return value.isoformat()
if hasattr(value, "item"):
try:
return _json_default(value.item())
except Exception:
pass
return str(value)
def normalize_code(value: Any) -> str:
value = clean_scalar(value)
if value in (None, ""):
@@ -1585,7 +1596,7 @@ def convert_xlsx_to_json(xlsx_path: Path, output_path: Path) -> None:
# Recompute checksum invariants after any blueprint mutation patch.
result["data"]["_harness_context"] = ensure_extended_harness_defaults(result["data"]["_harness_context"])
output_path.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
output_path.write_text(json.dumps(result, ensure_ascii=False, indent=2, default=_json_default), encoding="utf-8")
print(f"Conversion complete: {output_path}")