Advertisement
zergon321

custom time JSON

Feb 10th, 2022
1,158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.72 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "encoding/json"
  5.     "fmt"
  6.     "strings"
  7.     "time"
  8. )
  9.  
  10. const TimeLayout = "2006-01-02T15:04:05"
  11.  
  12. type Time time.Time
  13.  
  14. func (t *Time) MarshalJSON() ([]byte, error) {
  15.     tt := time.Time(*t)
  16.     str := tt.Format(TimeLayout)
  17.  
  18.     return []byte(str), nil
  19. }
  20.  
  21. func (t *Time) UnmarshalJSON(b []byte) error {
  22.     str := string(b)
  23.     str = strings.Trim(str, "\"")
  24.     tt, err := time.Parse(TimeLayout, str)
  25.  
  26.     if err != nil {
  27.         return err
  28.     }
  29.  
  30.     *t = Time(tt)
  31.  
  32.     return nil
  33. }
  34.  
  35. type Lol struct {
  36.     DT *Time `json:"dt"`
  37. }
  38.  
  39. func main() {
  40.     dt := &Lol{}
  41.     err := json.Unmarshal([]byte("{\"dt\": \"1968-07-16T00:00:00\"}"), dt)
  42.  
  43.     if err != nil {
  44.         fmt.Println(err)
  45.         return
  46.     }
  47.  
  48.     fmt.Println(time.Time(*dt.DT))
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement