"""JSON 文件读取工具"""

import json
from pathlib import Path
from typing import Any, Union


def load_json(json_path: Union[str, Path]) -> Any:
    """
    读取 JSON 文件并返回其内容
    
    Args:
        json_path: JSON 文件的路径
        
    Returns:
        JSON 文件中解析后的数据
        
    Raises:
        FileNotFoundError: 当文件不存在时
        json.JSONDecodeError: 当 JSON 格式无效时
    """
    try:
        path = Path(json_path)
        
        if not path.exists():
            raise FileNotFoundError(f"JSON 文件不存在: {json_path}")
        
        if not path.is_file():
            raise ValueError(f"路径不是一个文件: {json_path}")
        
        with open(path, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        return data
        
    except json.JSONDecodeError as e:
        raise json.JSONDecodeError(f"JSON 格式错误: {e.msg}", e.doc, e.pos)
    except FileNotFoundError:
        raise
    except Exception as e:
        raise Exception(f"读取 JSON 文件时发生错误: {str(e)}")
