Bagaimana untuk Menyahmarshal Datetime yang Diformat dengan Salah dalam Go?

DDD
Lepaskan: 2024-11-07 21:48:03
asal
396 orang telah melayarinya

How to Unmarshal Incorrectly Formatted Datetime in Go?

Menyahmarshalling Datetime Salah Format

Apabila menghadapi JSON dengan medan datetime yang tidak diformatkan dengan betul, adalah penting untuk merangka strategi yang mantap untuk menghuraikan dan menyahmarshal mereka ke dalam struct Go. Format yang salah biasanya melibatkan ketiadaan aksara bertindih ":" dalam zon waktu mengimbangi, yang membawa kepada ralat unmarshalling.

Penyelesaian: Jenis Tersuai dan Kaedah UnmarshalJSON

Kepada menyelesaikan isu ini, jenis tersuai boleh ditakrifkan untuk menyokong kedua-dua format yang betul dan salah:

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

func (self *MyTime) UnmarshalJSON(b []byte) (err error) {
    s := string(b)
    s = s[1:len(s)-1]

    t, err := time.Parse(time.RFC3339Nano, s)
    if err != nil {
        t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s)
    }
    self.Time = t
    return
}</code>
Salin selepas log masuk

Apabila unmarshalling, kaedah UnmarshalJSON jenis ini digunakan. Ia mula-mula mengalih keluar petikan di sekeliling daripada rentetan JSON. Ia kemudian cuba menghuraikan masa tarikh menggunakan format masa standard.RFC3339Nano. Jika gagal, ia terus mencuba menghuraikan menggunakan format yang salah tanpa aksara bertindih ("2006-01-02T15:04:05.999999999Z0700").

Definisi Struktur

Untuk menggunakan jenis tersuai ini dalam struct Go:

<code class="go">type Test struct {
    Time MyTime `json:"time"`
}</code>
Salin selepas log masuk

Ini memastikan JSON dengan kedua-dua format datetime yang betul dan tidak betul boleh dinyahmarshalkan ke dalam struct Go yang sama.

Kesimpulan

Dengan mentakrifkan jenis medan masa tersuai dengan kaedah UnmarshalJSON yang sesuai, adalah mungkin untuk menghuraikan dan menyahmarshal medan datetime yang diformat dengan tidak betul dengan lancar dalam program Go. Ini membolehkan lebih fleksibiliti dalam mengendalikan data input dan memastikan perwakilan struct Go menggambarkan data dengan tepat, tanpa mengira formatnya.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Datetime yang Diformat dengan Salah dalam Go?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!