fix: 修复响应体解析逻辑并统一结构包装

This commit is contained in:
2026-06-05 11:48:27 +08:00
parent de70d33115
commit ee6677c1f8

View File

@@ -274,29 +274,23 @@ func ParseStructResult(raw map[string]any, responseBody string) map[string]any {
}
contentVal := raw[responseBody]
if contentVal == nil {
return map[string]any{
"total_rounds": 1,
"rounds": []map[string]any{raw},
}
}
var rounds []map[string]any
// 是字符串,尝试解析
contentStr := gconv.String(contentVal)
if contentStr == "" || contentStr == "0" {
rounds = append(rounds, map[string]any{responseBody: raw})
return map[string]any{
"total_rounds": 1,
"rounds": []map[string]any{raw},
"rounds": rounds,
}
}
// 尝试解析为数组
var arr []map[string]any
var arr []any
if err := json.Unmarshal([]byte(contentStr), &arr); err == nil && len(arr) > 0 {
// 数组的每个元素包一层 content
var rounds []map[string]any
for _, item := range arr {
rounds = append(rounds, map[string]any{"content": item})
}
rounds = append(rounds, map[string]any{responseBody: arr})
return map[string]any{
"total_rounds": len(rounds),
"rounds": rounds,
@@ -304,15 +298,20 @@ func ParseStructResult(raw map[string]any, responseBody string) map[string]any {
}
// 尝试解析为单个对象
var parsed map[string]any
var parsed any
if err := json.Unmarshal([]byte(contentStr), &parsed); err == nil {
raw[responseBody] = parsed
rounds = append(rounds, map[string]any{responseBody: parsed})
return map[string]any{
"total_rounds": 1,
"rounds": rounds,
}
}
// 兜底:包标准结构
// 兜底:原始字符串作为内容
rounds = append(rounds, map[string]any{responseBody: contentStr})
return map[string]any{
"total_rounds": 1,
"rounds": []map[string]any{raw},
"rounds": rounds,
}
}