diff --git a/controller/channel.go b/controller/channel.go index bf735779..8e5ae40a 100644 --- a/controller/channel.go +++ b/controller/channel.go @@ -394,9 +394,19 @@ func getVertexArrayKeys(keys string) ([]string, error) { } cleanKeys := make([]string, 0, len(keyArray)) for _, key := range keyArray { - keyStr := fmt.Sprintf("%v", key) + var keyStr string + switch v := key.(type) { + case string: + keyStr = strings.TrimSpace(v) + default: + bytes, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("Vertex AI key JSON 编码失败: %w", err) + } + keyStr = string(bytes) + } if keyStr != "" { - cleanKeys = append(cleanKeys, strings.TrimSpace(keyStr)) + cleanKeys = append(cleanKeys, keyStr) } } if len(cleanKeys) == 0 { diff --git a/model/channel.go b/model/channel.go index 0b8d9ba2..4144075c 100644 --- a/model/channel.go +++ b/model/channel.go @@ -53,8 +53,8 @@ type ChannelInfo struct { } // Value implements driver.Valuer interface -func (c *ChannelInfo) Value() (driver.Value, error) { - return common.EncodeJson(c) +func (c ChannelInfo) Value() (driver.Value, error) { + return common.EncodeJson(&c) } // Scan implements sql.Scanner interface