我有類似以下防止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