in sg/internal/project/types.go [65:98]
func (p *strListOrMap) UnmarshalJSON(data []byte) error {
dec := json.NewDecoder(bytes.NewReader(data))
t, err := dec.Token()
if err != nil {
return err
}
v, ok := t.(json.Delim)
if !ok {
return fmt.Errorf("unsupported value, only list and map are supported")
}
switch v {
case '[':
var values []string
if err := json.Unmarshal(data, &values); err != nil {
return err
}
for _, value := range values {
*p = append(*p, value)
}
case '{':
var values map[string]interface{}
if err := json.Unmarshal(data, &values); err != nil {
return err
}
for k := range values {
*p = append(*p, k)
}
}
sort.Strings(*p)
return nil
}