我有类似以下防止json.Marshal了time.time移除结尾零
package main
import (
"fmt"
"time"
"encoding/json"
)
type Message struct {
Time time.Time `json:"timestamp,omitempty"`
}
func main() {
t, _ := time.Parse("2006-01-02T15:04:05.999Z07:00", "2017-05-01T15:04:05.630Z")
msg := Message{
Time: t,
}
bs, _ := json.Marshal(msg)
fmt.Println(string(bs[:]))
}
这将打印
代码{"timestamp":"2017-05-01T15:04:05.63Z"}
我怎样才能让JSON编组保持尾随0?即,打印这个?
{"timestamp":"2017-05-01T15:04:05.630Z"}
编辑:
这里的操场https://play.golang.org/p/9p3kWeiwu2
要有所控制,你可能会需要定义基于'time.Time'自己的类型,并实现自己的MarshalJSON'的'版本的该类型的那个级别。 –
这是为什么这是必要的?据推测,接收机需要3个精确的小数点?你可以勉强一点,只要确保你在那个地方从来没有零点加入'0.001秒'?这会影响准确性(无论重要程度取决于您的应用程序),但可能会使代码的其余部分更加容易。 – Flimzy
好吧,增加0.001秒仍然不能确保你永远不会有.000,因为它会导致X.999卷起到(X + 1).000。 – Kaedys