golang time.Time json 自定义格式


package main

import (
    "encoding/json"
    "fmt"
    "strconv"
    "time"
)

const (
    format="2006-01-02 15:04:05"
)

type MyTime time.Time


func (t MyTime) MarshalJSON() ([]byte, error) {
    b := make([]byte, 0, len(format)+2)
    b = append(b, '"')
    b = (time.Time(t)).AppendFormat(b, format)
    b = append(b, '"')
    return b, nil
}

func (t *MyTime) UnmarshalJSON(data []byte) (err error) {
    now, err := time.ParseInLocation(`"`+format+`"`, string(data), time.Local)
    *t = MyTime(now)
    return
}

type Person struct {
    Id       int64  `json:"id"`
    Name     string `json:"name"`
    Birthday MyTime   `json:"birthday"`
}

func (this Person) String()string  {
    bytes, _ := this.Birthday.MarshalJSON()
    return "\""+strconv.FormatInt(this.Id,10)+" "+this.Name+" "+string(bytes)
}

func main()  {
    src := `{"id":5,"name":"xiaoming","birthday":"2016-06-30 16:09:51"}`
    var p Person
    err:= json.Unmarshal([]byte(src), &p)
    if err!=nil{
    }else{
        fmt.Println(p)

    }

    bytes, err := json.Marshal(&p)
    if err!=nil{
        fmt.Println("pars error",err.Error())
    }else{
        fmt.Println(string(bytes))

    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM