Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshal Rentetan Dipisahkan Koma menjadi Slice dalam Go Menggunakan 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!