Cara Melaraskan Reka Letak Masa. Medan Masa dalam JSON Marshaling
Dalam Go, fungsi pengekodan/json Marshal menyediakan cara generik untuk mengekod struktur data ke dalam format JSON. Apabila menyusun medan masa. Masa, ia biasanya menggunakan reka letak lalai. Walau bagaimanapun, mungkin terdapat senario di mana anda perlu menyesuaikan reka letak yang digunakan untuk pemformatan masa.
Pertimbangkan contoh berikut:
<code class="go">s := {"starttime":time.Now(), "name":"ali"}</code>
Untuk mengekod s ke JSON menggunakan Marshal, anda biasanya akan memanggil :
<code class="go">json.Marshal(s)</code>
Walau bagaimanapun, anda mungkin mahu menggunakan reka letak khusus untuk medan "masa mula". Untuk mencapai matlamat ini, kita boleh memanfaatkan jenis tersuai "jsonTime":
<code class="go">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 }</code>
Struktur jsonTime membenamkan jenis masa. Masa untuk mengekalkan akses kepada kaedahnya. Kaedah format() mengembalikan perwakilan rentetan terformat tersuai bagi nilai masa menggunakan rentetan reka letak f.
Untuk mengatasi reka letak lalai yang digunakan oleh Marshal, kita boleh melaksanakan kaedah MarshalJSON untuk jsonTime:
<code class="go">func (j jsonTime) MarshalJSON() ([]byte, error) { return []byte(`"` + j.format() + `"`), nil }</code>
Ini memastikan bahawa medan masa mula dalam output JSON diformatkan mengikut reka letak yang ditentukan.
Akhir sekali, anda boleh menggunakan jenis jsonTime untuk mencapai reka letak yang anda inginkan:
<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) } fmt.Printf("%s", data)</code>
Dengan menggunakan jenis jsonTime dan pelaksanaan pemformatan tersuainya, anda boleh mengawal reka letak yang digunakan dengan berkesan oleh pengekodan/fungsi Marshal json untuk medan masa.
Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Reka Letak Medan Masa. Masa dalam JSON Marshaling dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!