Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshal JSON ke dalam Struktur Khusus Menggunakan Pembolehubah Antara Muka dalam Go?
Cara Menyahmarshal JSON ke dalam Struktur Khusus Menggunakan Pembolehubah Antara Muka
Masalah:
Bila menyahmarshaling JSON ke dalam pembolehubah antara muka, pakej pengekodan/json mentafsirkannya sebagai a peta. Bagaimanakah kita boleh mengarahkannya untuk menggunakan struct tertentu sebaliknya?
Penjelasan:
Pakej JSON memerlukan jenis konkrit untuk disasarkan apabila unmarshaling. Melepasi pembolehubah{} antara muka tidak memberikan maklumat yang mencukupi dan pakej lalai untuk memetakan[rentetan]antara muka{} untuk objek dan []antara muka{} untuk tatasusunan.
Penyelesaian:
Tiada cara terbina dalam untuk memberitahu json.Unmarshal untuk unmarshal menjadi jenis struct konkrit menggunakan pembolehubah antara muka. Walau bagaimanapun, terdapat penyelesaian:
func getFoo() interface{} { return &Foo{"bar"} }
err := json.Unmarshal(jsonBytes, fooInterface)
fmt.Printf("%T %+v", fooInterface, fooInterface)
Contoh:
Kod berikut menunjukkan teknik:
package main import ( "encoding/json" "fmt" ) type Foo struct { Bar string `json:"bar"` } func getFoo() interface{} { return &Foo{"bar"} } func main() { fooInterface := getFoo() myJSON := `{"bar":"This is the new value of bar"}` jsonBytes := []byte(myJSON) err := json.Unmarshal(jsonBytes, fooInterface) if err != nil { fmt.Println(err) } fmt.Printf("%T %+v", fooInterface, fooInterface) // prints: *main.Foo &{Bar:This is the new value of bar} }
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal JSON ke dalam Struktur Khusus Menggunakan Pembolehubah Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!