Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menyesuaikan Reka Letak JSON untuk medan masa. Masa di Golang?
Di Golang, fungsi pengekodan/json.Marshal biasanya digunakan untuk menukar objek kepada JSON. Walau bagaimanapun, di bawah tetapan lalai, ia mungkin tidak sejajar dengan reka letak JSON yang diingini. Artikel ini menggambarkan penyelesaian untuk mengatasi reka letak lalai dan menyesuaikan format yang digunakan mengikut masa. Medan masa semasa JSON marshalling.
Mari andaikan anda mempunyai struct s dengan medan masa.Masa dinamakan masa mula. Apabila menyusun struct ini kepada JSON, anda ingin menggunakan reka letak tersuai khusus.
s := {"starttime":time.Now(), "name":"ali"}
Untuk mencapai ini, kami boleh mencipta jenis tersuai yang membenamkan masa. Masa dan mengatasi kedua-dua kaedah MarshalText dan MarshalJSON.
<code class="go">import "fmt" import "time" import "encoding/json" type jsonTime struct { time.Time f string } func (j jsonTime) format() string { return j.Time.Format(j.f) } func (j jsonTime) MarshalText() ([]byte, error) { return []byte(j.format()), nil } func (j jsonTime) MarshalJSON() ([]byte, error) { return []byte(`"` + j.format() + `"`), nil }</code>
Dengan mengatasi MarshalText, kami mengawal cara jenis jsonTime menukar nilainya kepada bentuk teks, membolehkan kami menentukan reka letak tersuai. Selain itu, dengan mengatasi MarshalJSON, kami memastikan kaedah yang diganti digunakan dan bukannya masa terbina dalam. Pelaksanaan masa untuk JSON marshalling.
Dengan jenis jsonTime tersuai, anda kini boleh marshall s struct anda menggunakan reka letak yang diingini :
<code class="go">jt := jsonTime{time.Now(), time.Kitchen} x := map[string]interface{}{ "foo": jt, "bar": "baz", } data, err := json.Marshal(x) if err != nil { panic(err) }</code>
Ini akan menghasilkan rentetan JSON dengan medan masa mula diformat mengikut masa. Reka letak dapur.
Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Reka Letak JSON untuk medan masa. Masa di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!