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
Patricia Arquetteasal
2024-11-09 03:23:01871semak imbas

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))
}

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)
}

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)
}

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!

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