package sqlite import ( "encoding/json" "fmt" ) type intSliceJSON []int func (s *intSliceJSON) Scan(src interface{}) error { if src == nil { *s = nil return nil } var data []byte switch v := src.(type) { case []byte: data = v case string: data = []byte(v) default: return fmt.Errorf("intSliceJSON.Scan: unsupported type %T", src) } if len(data) == 0 { *s = nil return nil } return json.Unmarshal(data, (*[]int)(s)) } type stringSliceJSON []string func (s *stringSliceJSON) Scan(src interface{}) error { if src == nil { *s = nil return nil } var data []byte switch v := src.(type) { case []byte: data = v case string: data = []byte(v) default: return fmt.Errorf("stringSliceJSON.Scan: unsupported type %T", src) } if len(data) == 0 { *s = nil return nil } return json.Unmarshal(data, (*[]string)(s)) } func marshalStringSlice(values []string) (string, error) { if values == nil { values = []string{} } data, err := json.Marshal(values) if err != nil { return "", err } return string(data), nil }