address_json.go 480 B

123456789101112131415161718192021222324252627
  1. // +build json
  2. package net
  3. import (
  4. "encoding/json"
  5. )
  6. func (this *IPOrDomain) UnmarshalJSON(data []byte) error {
  7. var rawStr string
  8. if err := json.Unmarshal(data, &rawStr); err != nil {
  9. return err
  10. }
  11. addr := ParseAddress(rawStr)
  12. switch addr.Family() {
  13. case AddressFamilyIPv4, AddressFamilyIPv6:
  14. this.Address = &IPOrDomain_Ip{
  15. Ip: []byte(addr.IP()),
  16. }
  17. case AddressFamilyDomain:
  18. this.Address = &IPOrDomain_Domain{
  19. Domain: addr.Domain(),
  20. }
  21. }
  22. return nil
  23. }