Bagaimana untuk Memisahkan Medan JSON kepada Slice Rentetan Semasa Unmarshaling di Golang?

Susan Sarandon
Lepaskan: 2024-10-27 03:20:30
asal
891 orang telah melayarinya

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

Custom Unmarshal dengan String Split di Golang

Masalah:

Mengendalikan JSON unmarshalling apabila satu medan memerlukan pemisahan menjadi kepingan menggunakan operasi rentetan. Khususnya, medan "subjek" dalam JSON yang disediakan memerlukan pemisahan pada '-' untuk mencipta rentetan [].

Penyelesaian:

Untuk mencapai ini, kita boleh tentukan jenis kepingan rentetan tersuai dan laksanakan antara muka json.Unmarshaler untuknya. Begini caranya:

<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

Jenis tersuai ini akan membolehkan kami menyahmarshal medan "subjek" sebagai rentetan dan kemudian membelahnya secara automatik menjadi kepingan.

Struktur Disemak:

Kini, kami boleh mengemas kini struct Pelajar kami untuk menggunakan jenis strslice tersuai 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

Penggunaan:

Dengan pengubahsuaian ini, kami kini boleh menyahmarshal JSON yang disediakan dan membahagikan medan "subjek" secara automatik:

<code class="go">func main() {
    var s Student
    err := json.Unmarshal([]byte(src), &s)
    fmt.Println(s, err)
}

const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
Salin selepas log masuk

Output:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Salin selepas log masuk

Ini pendekatan menyediakan cara yang bersih dan boleh disesuaikan untuk mengendalikan transformasi medan sambil membongkar data JSON.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Medan JSON kepada Slice Rentetan Semasa Unmarshaling di Golang?. 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!