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
Lepaskan: 2024-11-08 20:41:02
asal
1003 orang telah melayarinya

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

Andaikan kita ingin menyahkod ini menjadi struct Person:

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

Menggunakan penyahkod JSON standard:

person := Person{}

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

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

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

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!

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