func()

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
}