24 lines
858 B
Python
24 lines
858 B
Python
"""JSON 脚本导入评测用例。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from typing import Any
|
|
|
|
|
|
def parse_script_json(raw: str | bytes) -> tuple[list[str], dict[str, Any]]:
|
|
data = json.loads(raw if isinstance(raw, str) else raw.decode("utf-8"))
|
|
if isinstance(data, list):
|
|
utterances = [str(x).strip() for x in data if str(x).strip()]
|
|
return utterances, {}
|
|
if isinstance(data, dict):
|
|
u = data.get("utterances") or data.get("user_utterances") or []
|
|
if not isinstance(u, list):
|
|
raise ValueError("utterances 必须是数组")
|
|
utterances = [str(x).strip() for x in u if str(x).strip()]
|
|
meta = {
|
|
k: v for k, v in data.items() if k not in ("utterances", "user_utterances")
|
|
}
|
|
return utterances, meta
|
|
raise ValueError("根须为数组或对象")
|