Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyesuaikan Reka Letak JSON untuk medan masa. Masa di Golang?

Bagaimana untuk Menyesuaikan Reka Letak JSON untuk medan masa. Masa di Golang?

Susan Sarandon
Susan Sarandonasal
2024-11-01 08:42:02671semak imbas

How to Customize the JSON Layout for time.Time Fields in Golang?

Menyesuaikan Reka Letak JSON untuk 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn