code: func (id *ID) UnmarshalJSON(data []byte) error {
  	// Support both uint64 and string IDs.
  	var v uint64
  	if err := json.Unmarshal(data, &v); err == nil {
  		*id = ID{Num: v}
  		return nil
  	}
  	var v2 string
  	if err := json.Unmarshal(data, &v2); err != nil {
  		return err
  	}
  	*id = ID{Str: v2, IsString: true}
  	return nil
  }
docs: // UnmarshalJSON implements json.Unmarshaler.