func (m *Map) UnmarshalJSON(b []byte) error {
	var stuff map[string]interface{}
	if err := json.Unmarshal(b, &stuff); err != nil {
		return ErrSQLMapUnmarshalJSON(err)
	}
	if *m == nil {
		*m = Map{}
	}
	for key, value := range stuff {
		(*m)[key] = value
	}
	return nil
}
UnmarshalJSON will unmarshall JSON value into
the map representation of this value.
package database
import (
	"database/sql/driver"
	"encoding/json"
)
type Map map[string]interface{}
func (m Map) Interface() interface{} {
	return map[string]interface{}(m)
}
func (m *Map) Scan(src interface{}) error {
	var b []byte
	switch t := src.(type) {
	case []byte:
		b = t
	case string:
		b = []byte(t)
	default:
		return ErrSQLMapInvalidScan
	}
	if err := json.Unmarshal(b, m); err != nil {
		return ErrSQLMapUnmarshalScanned(err)
	}
	return nil
}
func (m Map) Value() (driver.Value, error) {
	b, err := json.Marshal(m)
	if err != nil {
		return nil, ErrSQLMapMarshalValue(err)
	}
	return string(b), nil
}