Bagaimana untuk Menyesuaikan JSON Unmarshaling dengan String Split in Go?

Linda Hamilton
Lepaskan: 2024-10-26 04:23:02
asal
483 orang telah melayarinya

How to Customize JSON Unmarshaling with String Split in Go?

Custom Unmarshal with String Split in Go

Apabila berurusan dengan data JSON, keperluan sering timbul untuk mengubah atau menyesuaikan proses unmarshaling untuk tertentu jenis data. Dalam kes ini, kami ingin membahagikan rentetan JSON yang mengandungi nilai dipisahkan koma kepada []hirisan rentetan semasa menyahmarshaling.

Untuk mencapai ini, mari kita laksanakan unmarshaler tersuai untuk []jenis rentetan:

<code class="go">type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
    var s string
    if err := json.Unmarshal(data, &s); err != nil {
        return err
    }
    *ss = strings.Split(s, "-")
    return nil
}</code>
Salin selepas log masuk

Penyahmarshaler tersuai ini mengambil data JSON mentah sebagai input dan menukarnya kepada kepingan rentetan dengan membelahnya pada pembatas yang ditentukan ("-" dalam kes ini).

Dalam struct asal kami , kini kami boleh menggunakan jenis tersuai ini untuk medan Subjek:

<code class="go">type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}</code>
Salin selepas log masuk

Ini membolehkan kami menyahmarshal data JSON terus ke dalam struct, dengan medan Subjek dipecahkan secara automatik kepada rentetan individu:

<code class="go">json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
var s Student
if err := json.Unmarshal([]byte(json), &s); err != nil {
    panic(err)
}
fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan JSON Unmarshaling dengan String Split in 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
Artikel terbaru oleh pengarang
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!