Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshal Rentetan Dipisahkan Koma menjadi Slice dalam Go Menggunakan Custom Unmarshaling?

Bagaimana untuk Menyahmarshal Rentetan Dipisahkan Koma menjadi Slice dalam Go Menggunakan Custom Unmarshaling?

DDD
DDDasal
2024-10-26 16:21:30671semak imbas

How to Unmarshal a Comma-Separated String into a Slice in Go Using Custom Unmarshaling?

Custom Unmarshal dengan String Split in Go

Apabila menyahmarshall JSON ke dalam struct Go, tingkah laku lalai adalah untuk menukar nilai JSON kepada struct yang sepadan padang. Walau bagaimanapun, terdapat senario di mana anda mungkin perlu melakukan transformasi tersuai semasa proses unmarshalling.

Pertimbangkan objek JSON dengan "subjek" diwakili sebagai rentetan yang dipisahkan koma. Untuk menyahmarshal ini menjadi struct Go dengan "subjek" sebagai hirisan rentetan, anda perlu membelah rentetan semasa unmarshalling.

Satu pendekatan ialah melaksanakan unmarshaller tersuai untuk medan "subjek" menggunakan json. Antara muka Unmarshaler. Begini cara anda boleh mencapai ini:

type SubjectSlice []string

// UnmarshalJSON implements custom unmarshalling for SubjectSlice.
func (s *SubjectSlice) UnmarshalJSON(data []byte) error {
    var subjects string
    err := json.Unmarshal(data, &subjects)
    if err != nil {
        return err
    }
    *s = strings.Split(subjects, "-")
    return nil
}

Dalam takrifan struct anda, gunakan jenis kepingan tersuai untuk medan "subjek":

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}

Apabila anda menyahmarshal JSON menggunakan tersuai ini unmarshaller, medan "subjek" akan dipecahkan secara automatik menjadi kepingan rentetan.

Sebagai contoh, pertimbangkan JSON berikut:

{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}

Nyahmarshaller ke dalam struct Pelajar dengan unmarshaller tersuai akan menghasilkan:

s := Student{
    StudentNumber: 1234567,
    Name: "John Doe",
    Subjects: []string{"Chemistry", "Maths", "History", "Geography"},
}

Dengan melaksanakan unmarshaller tersuai, anda boleh mengendalikan transformasi data yang kompleks semasa unmarshalling, menjadikannya alat yang berkuasa untuk bekerja dengan struktur data tersuai dalam JSON.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Rentetan Dipisahkan Koma menjadi Slice dalam Go Menggunakan Custom Unmarshaling?. 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