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
Lepaskan: 2024-10-26 16:21:30
asal
677 orang telah melayarinya

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
}
Salin selepas log masuk

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

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}
Salin selepas log masuk

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"}
Salin selepas log masuk

Nyahmarshaller ke dalam struct Pelajar dengan unmarshaller tersuai akan menghasilkan:

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan