Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan refleksi untuk bersiri dan penyahserikatan dalam golang
Gunakan pantulan Go untuk penyirian dan penyahsirian: Pensirian: Gunakan fungsi pengekodan/json.Marshal untuk menyirikan struktur ke dalam aliran bait. Penyahserikatan: Gunakan fungsi pengekodan/json.Unmarshal untuk menyahsiri struktur daripada aliran bait.
Refleksi ialah ciri berkuasa dalam Go yang membolehkan anda memeriksa dan mengubah suai atur cara yang sedang berjalan. Ia boleh digunakan untuk pelbagai tujuan, termasuk bersiri dan penyahserilan, dan ia membolehkan anda menyimpan struktur data sebagai aliran bait dan kemudian menciptanya semula kemudian.
Untuk menyusun struktur menggunakan pantulan, gunakan fungsi Marshal
daripada pakej encoding/json
. Fungsi ini memerlukan penuding kepada struktur sebagai hujah pertamanya dan mengembalikan kepingan bait bersiri. encoding/json
包中的 Marshal
函数。该函数需要指向结构的指针作为其第一个参数,并返回序列化后的字节切片。
package main import ( "encoding/json" "fmt" "io/ioutil" "os" ) type person struct { FirstName string LastName string Age int } func main() { p := person{FirstName: "John", LastName: "Doe", Age: 30} b, err := json.Marshal(&p) if err != nil { panic(err) } // 保存序列化后的数据到文件 err = ioutil.WriteFile("person.json", b, 0644) if err != nil { panic(err) } }
要反序列化已序列化的数据,请使用 encoding/json
包中的 Unmarshal
func main() { var p person b, err := ioutil.ReadFile("person.json") if err != nil { panic(err) } // 反序列化数据到结构 err = json.Unmarshal(b, &p) if err != nil { panic(err) } // 打印反序列化的数据 fmt.Printf("%+v\n", p) }DeserialisasiUntuk menyahsiri data bersiri, gunakan fungsi
Unmarshal
daripada pakej encoding/json
. Fungsi ini memerlukan penuding kepada struktur sebagai hujah pertamanya dan sekeping bait yang mengandungi data bersiri sebagai hujah kedua. type user struct { ID int Name string } var users = []user{ {1, "john"}, {2, "jane"}, } var b []byte func main() { // 序列化用户数组 b, _ = json.Marshal(users) // 将序列化后的数据保存到文件中 ioutil.WriteFile("users.json", b, 0644) // 反序列化文件中的数据 var loadedUsers []user json.Unmarshal(b, &loadedUsers) // 打印反序列化的用户 fmt.Println(loadedUsers) }Kes praktikal🎜🎜Berikut ialah contoh praktikal siri dan penyahserikan menggunakan refleksi: 🎜rrreee
Atas ialah kandungan terperinci Cara menggunakan refleksi untuk bersiri dan penyahserikatan dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!