Spaces:
Running
Running
import json | |
from typing import Any | |
from json_repair import repair_json | |
def validate_and_repair_json(json_str: str | dict) -> dict[str, Any] | str: | |
"""Validates a JSON string and attempts to repair it if invalid. | |
Args: | |
json_str (str): The JSON string to validate/repair | |
Returns: | |
Union[Dict[str, Any], str]: The parsed JSON dict if valid/repairable, | |
otherwise returns the original string | |
""" | |
if not isinstance(json_str, str): | |
return json_str | |
try: | |
# If invalid, attempt repair | |
repaired = repair_json(json_str) | |
return json.loads(repaired) | |
except (json.JSONDecodeError, ImportError): | |
# Return original if repair fails or module not found | |
return json_str | |