Bagaimana untuk Menyesuaikan JSON Marshaling untuk Medan Masa di Golang?

Barbara Streisand
Lepaskan: 2024-11-02 20:47:30
asal
965 orang telah melayarinya

How to Customize JSON Marshaling for Time Fields in Golang?

Menyesuaikan JSON Marshaling untuk Medan Masa dengan Override di Golang

In Go, pengekodan/fungsi Marshal json menyediakan cara yang mudah untuk menukar struktur data ke dalam JSON. Walau bagaimanapun, ia menggunakan reka letak lalai untuk masa. Medan masa. Artikel ini meneroka cara untuk mengatasi reka letak ini untuk menggunakan format tersuai.

Pertimbangkan struct berikut:

<code class="go">type Person struct {
    age  int
    name string
    dob  time.Time
}</code>
Salin selepas log masuk

Secara lalai, Marshaling struct ini menukar medan dob kepada reka letak RFC3339, yang mungkin tidak selalu diingini.

Untuk mengatasi reka letak lalai, kita boleh menggunakan jenis tersuai yang membenamkan masa.Masa dan melaksanakan MarshalJSON:

<code class="go">type CustomTime struct {
    time.Time
}

func (t CustomTime) MarshalJSON() ([]byte, error) {
    return []byte(`"` + t.Format("my_custom_layout") + `"`), nil
}</code>
Salin selepas log masuk

Sekarang, gantikan masa.Masa dengan CustomTime dalam struct Person:

<code class="go">type Person struct {
    age  int
    name string
    dob  CustomTime
}</code>
Salin selepas log masuk

Apabila Marshaling struct Person yang diubah suai ini, susun atur tersuai akan digunakan pada medan dob.

Contoh:

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "time"
)

type Person struct {
    age  int
    name string
    dob  CustomTime
}

func main() {
    dob := time.Now()
    p := Person{25, "John Doe", CustomTime{dob}}
    jsonBytes, err := json.Marshal(p)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(jsonBytes))
}</code>
Salin selepas log masuk

Output: {"umur":25,"nama":"John Doe","dob":"2023-03-08T14:41:21 00:00"}

Dalam ini contoh, susun atur tersuai ialah "layout_custom_my" yang tidak terdapat dalam struct Person. Sebaliknya, kami telah menentukannya secara langsung dalam kaedah MarshalJSON CustomTime.

Penyesuaian ini membolehkan anda mengawal reka letak masa. Medan masa apabila menggunakan fungsi Marshal, memberikan fleksibiliti dan kawalan ke atas perwakilan JSON.

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan JSON Marshaling untuk Medan 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