Skip to content

Instantly share code, notes, and snippets.

@prasincs
Last active December 20, 2015 01:29
Show Gist options
  • Save prasincs/6049364 to your computer and use it in GitHub Desktop.
Save prasincs/6049364 to your computer and use it in GitHub Desktop.
Golang hacks/experiments
package main
import (
"encoding/json"
"time"
"fmt"
"strconv"
)
type jsonTime time.Time
type Message struct {
Name string `json:"name"`
Time jsonTime `json:"time"`
}
func (t jsonTime) MarshalJSON()([]byte, error){
return []byte(strconv.Quote(time.Time(t).Format(time.RFC3339))),nil
}
func (t *jsonTime) UnMarshalJSON(s []byte) (err error){
q, err := strconv.Unquote(string(s))
if (err != nil){
return err
}
*(*time.Time)(t), err = time.Parse(time.RFC3339,q)
return
}
func (t jsonTime) String() string{
return time.Time(t).String()
}
func main(){
m := Message{ "Test", jsonTime(time.Now())}
b, _ := json.Marshal(m)
fmt.Printf("%s\n",b)
b2 := []byte(`{"name":"Test","time":"2013-07-21T02:23:44-04:00"}`)
var m2 Message
err := json.Unmarshal(b2,&m2)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%v", m2)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment