func (s *SetList) UnmarshalJSON(data []byte) error {
	if s == nil {
		return errors.New("pointer receiver for unmarshal nil")
	}
	t := make([]string, 0)
	um_err := json.Unmarshal(data, &t)
	if um_err != nil {
		return um_err
	}
	m := make(map[string]bool)
	for _, v := range t {
		m[v] = true
	}
	for k, _ := range m {
		*s = append(*s, k)
	}
	return nil
}
UnmarshalJSON will remove duplicates
package attributevalue
import (
	"encoding/base64"
	"encoding/json"
	"errors"
	"fmt"
	"github.com/FiloSottile/Heartbleed/server/_third_party/github.com/smugmug/godynamo/types/cast"
	"strconv"
)
type SetList []string
func (s SetList) MarshalJSON() ([]byte, error) {
	m := make(map[string]bool)
	for _, v := range s {
		m[v] = true
	}
	t := make([]string, len(m))
	i := 0
	for k, _ := range m {
		t[i] = k
		i++
	}
	return json.Marshal(t)
}