1 Commits
v1.0.1 ... main

Author SHA1 Message Date
beb4fb6a76 修复 JSON 解析问题,支持多行格式化JSON输出 2026-07-06 23:12:02 +08:00

View File

@@ -64,13 +64,36 @@ class OpenClawClient:
raise Exception(f"CLI error: {result.stderr}") raise Exception(f"CLI error: {result.stderr}")
# 解析 JSON 输出(跳过警告) # 解析 JSON 输出(跳过警告)
lines = result.stdout.strip().split("\n") # OpenClaw 输出格式化的多行 JSON需要提取完整的 JSON 对象
json_lines = [l for l in lines if l.startswith("{") or l.startswith("[")] output = result.stdout.strip()
if json_lines: # 找到 JSON 开始位置
return json.loads(json_lines[-1]) json_start = -1
for i, char in enumerate(output):
if char == '{' or char == '[':
json_start = i
break
return {} if json_start == -1:
return {}
# 提取 JSON 部分
json_str = output[json_start:]
try:
return json.loads(json_str)
except json.JSONDecodeError:
# 如果失败,尝试其他方法
lines = output.split("\n")
json_lines = [l for l in lines if l.strip().startswith("{") or l.strip().startswith("[")]
if json_lines:
# 尝试解析每一行
for line in json_lines:
try:
return json.loads(line)
except:
continue
return {}
except subprocess.TimeoutExpired: except subprocess.TimeoutExpired:
raise Exception(f"Timeout running: {cmd}") raise Exception(f"Timeout running: {cmd}")
except json.JSONDecodeError as e: except json.JSONDecodeError as e: