Guest User

Untitled

a guest
Apr 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9.  
  10. const messageTimeLayout = "2006/01/02 15:04:05 -0700"
  11.  
  12. type MessageTime struct {
  13. time.Time
  14. }
  15.  
  16. func (mt MessageTime) MarshalJSON() ([]byte, error) {
  17. return []byte(fmt.Sprintf(`"%s"`, mt.Time.Format(messageTimeLayout))), nil
  18. }
  19.  
  20. func (mt *MessageTime) UnmarshalJSON(b []byte) (err error) {
  21. s := strings.Trim(string(b), `"`)
  22. if s == "" || s == "null" {
  23. mt.Time = time.Time{}
  24. } else {
  25. mt.Time, err = time.Parse(messageTimeLayout, s)
  26. }
  27. return
  28. }
  29.  
  30. func (mt MessageTime) String() string {
  31. return fmt.Sprintf(`"%s"`, mt.Time.Format(messageTimeLayout))
  32. }
  33.  
  34. type Message struct {
  35. Text string `json:"text"`
  36. CreatedAt MessageTime `json:"created_at"`
  37. }
  38.  
  39. func main() {
  40. rawJSON := `{"text":"Hello","created_at":"2018/04/16 23:30:00 +0700"}`
  41. message := Message{}
  42. json.Unmarshal([]byte(rawJSON), &message)
  43. toJSON, _ := json.Marshal(message)
  44. fmt.Println(string(toJSON))
  45. }
  46.  
  47. // Output: {"text":"Hello","created_at":"2018/04/16 23:30:00 +0700"}
Add Comment
Please, Sign In to add comment