获取AI决策失败: 调用AI API失败: 解析响应失败: json: cannot unmarshal object into Go struct field...
错误信息
AI 解决方案
错误翻译原文:json: cannot unmarshal object into Go struct field .promptFeedback of type []struct { BlockReason string "json:\"blockReason\"" }
译文:json: 无法将对象反序列化为 Go 结构体字段 .promptFeedback,期望类型是 []struct { BlockReason string "json:\"blockReason\"" }
原因分析
promptFeedback字段是一个对象(object),但代码中期望的是数组(slice)类型解决方案// 修复后的结构体定义
type APIResponse struct {
Candidates []Candidate `json:"candidates"`
PromptFeedback PromptFeedback `json:"promptFeedback"` // 从数组改为对象
UsageMetadata UsageMetadata `json:"usageMetadata"`
}
type PromptFeedback struct {
SafetyRatings []SafetyRating `json:"safetyRatings"`
// 其他可能的字段...
}
// 或者如果不需要promptFeedback,可以忽略该字段
type APIResponse struct {
Candidates []Candidate `json:"candidates"`
PromptFeedback interface{} `json:"promptFeedback"` // 使用interface{}忽略
UsageMetadata UsageMetadata `json:"usageMetadata"`
}
预防措施
API文档对齐:确保Go结构体定义与AI服务提供商的最新API文档完全匹配
使用JSON标签:为所有结构体字段添加omitempty标签,避免未知字段导致的解析错误
type PromptFeedback struct {
SafetyRatings []SafetyRating `json:"safetyRatings,omitempty"`
}