user_json.go 588 B

1234567891011121314151617181920212223242526272829
  1. // +build json
  2. package protocol
  3. import "encoding/json"
  4. func (u *User) UnmarshalJSON(data []byte) error {
  5. type rawUser struct {
  6. EmailString string `json:"email"`
  7. LevelByte byte `json:"level"`
  8. }
  9. var rawUserValue rawUser
  10. if err := json.Unmarshal(data, &rawUserValue); err != nil {
  11. return err
  12. }
  13. var rawAccount AccountJson
  14. if err := json.Unmarshal(data, &rawAccount); err != nil {
  15. return err
  16. }
  17. account, err := rawAccount.GetAccount()
  18. if err != nil {
  19. return err
  20. }
  21. *u = *NewUser(account, UserLevel(rawUserValue.LevelByte), rawUserValue.EmailString)
  22. return nil
  23. }