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

Bagaimana untuk Menyahkod Format Masa Bukan Standard daripada JSON?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-08 20:41:021010semak imbas

How to Decode Non-Standard Time Formats from JSON?

Menyahkod Format Masa Bukan Standard daripada JSON

Apabila berurusan dengan data JSON yang mengandungi format masa bukan standard, penyahkodan JSON standard mungkin dihadapi isu kerana ia menjangkakan corak format masa tertentu. Untuk mengatasinya, fungsi marshal dan unmarshal tersuai boleh dilaksanakan.

Sebagai contoh, pertimbangkan JSON berikut:

{
    "name": "John",
    "birth_date": "1996-10-07"
}

Andaikan kita ingin menyahkod ini menjadi struct Person:

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}

Menggunakan penyahkod JSON standard:

person := Person{}

decoder := json.NewDecoder(req.Body);

if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}

membawa kepada ralat, kerana penyahkod tidak boleh menghuraikan format masa bukan standard. Untuk menangani perkara ini, kita boleh mencipta alias jenis tersuai untuk nilai masa dan melaksanakan fungsi marshal dan unmarshal tersuai.

Contoh pelaksanaan boleh:

// Type alias
type JsonBirthDate time.Time

// Implement UnmarshalJSON
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
}

// Implement MarshalJSON
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

// Example use in struct
type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}

Dengan fungsi tersuai ini, Data JSON kini boleh berjaya dinyahkodkan ke dalam struct Person sasaran, dengan format masa bukan standard dihuraikan dengan sewajarnya.

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