import json

def find_ship_info(json_file_path, target_hull):
    """
    从JSON文件中根据舷号查找舰船信息
    :param json_file_path: JSON文件路径
    :param target_hull: 目标舷号 (字符串或数字)
    :return: 包含 model_name 和 ship_name 的字典，未找到返回 None
    """
    try:
        # 1. 打开并读取JSON文件
        with open(json_file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 2. 遍历列表查找匹配项
        # 注意：这里使用 str() 转换是为了兼容 JSON 中 hull_number 可能是数字(163)或字符串("163")的情况
        for item in data:
            if str(item.get('hull_number')) == str(target_hull):
                return {
                    "model_name": item.get('model_name'),
                    "ship_name": item.get('ship_name')
                }

        # 如果遍历结束仍未找到
        return None

    except FileNotFoundError:
        print(f"错误：找不到文件 {json_file_path}")
        return None
    except json.JSONDecodeError:
        print("错误：JSON 文件格式不正确")
        return None

# --- 使用示例 ---
if __name__ == "__main__":
    file_path = "E:\ZKYNLP\Hjunproject\project0506\kgrag\ship_xinghao.json"  # 替换为你的实际文件名
    search_hull = "163"       # 你要查询的舷号

    result = find_ship_info(file_path, search_hull)

    if result:
        print(f"查询成功！")
        print(f"型号: {result['model_name']}")
        print(f"舰名: {result['ship_name']}")
    else:
        print(f"未找到舷号为 {search_hull} 的记录")