Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package strarray
- import (
- "encoding/json"
- "errors"
- )
- var (
- // ErrUnsupportedType is returned if the type is not implemented
- ErrUnsupportedType = errors.New("unsupported type")
- )
- // StrArray string array to be used on JSON UnmarshalJSON
- type StrArray []string
- // UnmarshalJSON convert JSON object array of string or
- // a string format strings to a golang string array
- func (sa *StrArray) UnmarshalJSON(data []byte) error {
- var jsonObj interface{}
- err := json.Unmarshal(data, &jsonObj)
- if err != nil {
- return err
- }
- switch obj := jsonObj.(type) {
- case string:
- *sa = StrArray([]string{obj})
- return nil
- case []interface{}:
- s := make([]string, 0, len(obj))
- for _, v := range obj {
- value, ok := v.(string)
- if !ok {
- return ErrUnsupportedType
- }
- s = append(s, value)
- }
- *sa = StrArray(s)
- return nil
- }
- return ErrUnsupportedType
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement