Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-11-01 08:42:02
asal
777 orang telah melayarinya

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"}
Salin selepas log masuk

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>
Salin selepas log masuk

Dengan mengatasi MarshalText, kami mengawal cara jenis jsonTime menukar nilainya kepada bentuk teks, membenarkan kami untuk menentukan susun atur 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>
Salin selepas log masuk

Ini akan menghasilkan rentetan JSON dengan medan masa mula diformat mengikut masa.Kitchen susun atur.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan