code: func (e Enum) JSONUnmarshal(v interface{}, data []byte) error {
  	s := ""
  	if err := json.Unmarshal(data, &s); err != nil {
  		return err
  	}
  	return e.FlagSet(v, s)
  }
docs: // JSONUnmarshal implements json.Unmarshaler's UnmarshalJSON semantics. It
  // parses data containing a quoted string, identifies the enumeration value
  // associated with that string, and stores it in the supplied interface.
  //
  // The interface, v, must be a valid pointer to the mapped enumeration type.
  // a string corresponding to one of the enum's keys.