Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memisahkan Medan JSON kepada Slice Rentetan Semasa Unmarshaling di Golang?

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

Susan Sarandon
Susan Sarandonasal
2024-10-27 03:20:30881semak imbas

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>

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>

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>

Output:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>

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!

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