Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan Format Masa Bukan Standard daripada JSON di Golang?

Bagaimana untuk Menghuraikan Format Masa Bukan Standard daripada JSON di Golang?

Patricia Arquette
Lepaskan: 2024-11-09 03:23:01
asal
878 orang telah melayarinya

How to Parse Non-Standard Time Formats from JSON in Golang?

Menghuraikan Format Masa Bukan Standard daripada JSON

Apabila menyahkod data JSON ke dalam struktur tersuai, ketidakkonsistenan dalam format tarikh boleh timbul. Untuk menangani perkara ini, Golang menyediakan pilihan untuk melaksanakan fungsi marshal dan unmarshaler tersuai.

Fungsi Marshal dan Unmarshaler Tersuai

Untuk menentukan format penghuraian tersuai, alias jenis ialah dicipta untuk medan masa, dan antara muka Marshaler dan Unmarshaler dilaksanakan seperti berikut:

type JsonBirthDate time.Time

// UnmarshalJSON translates a JSON string to a time value.
func (j *JsonBirthDate) UnmarshalJSON(b []byte) error {
    s := strings.Trim(string(b), `"`)
    t, err := time.Parse("2006-01-02", s)
    if err != nil {
        return err
    }
    *j = JsonBirthDate(t)
    return nil
}

// MarshalJSON converts a time value to a JSON string.
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}
Salin selepas log masuk

Logik tersuai ini menyemak sama ada nilai JSON berada dalam format yang dikehendaki dan menghuraikannya dengan sewajarnya.

Struktur dan Penghuraian Kemas Kini

Struktur dikemas kini untuk menggunakan jenis tersuai dan penyahkodan boleh diteruskan seperti biasa:

type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}

decoder := json.NewDecoder(req.Body)
if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}
Salin selepas log masuk

Ciri Tambahan

Untuk kemudahan, kaedah Format boleh ditambah untuk menyediakan perwakilan berformat tarikh:

// Format prints the date using the specified format string.
func (j JsonBirthDate) Format(s string) string {
    t := time.Time(j)
    return t.Format(s)
}
Salin selepas log masuk

Pendekatan marshaling dan unmarshaling tersuai ini membolehkan penghuraian fleksibel nilai masa daripada JSON walaupun semasa mereka menyimpang daripada format standard.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Format Masa Bukan Standard daripada JSON 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