Menyahmarshalling Objek JSON Bersarang sebagai Rentetan atau Tatasusunan Byte
Menyahmarshalling JSON boleh disesuaikan untuk mengendalikan objek bersarang dengan cara tertentu. Dalam soalan itu, matlamatnya adalah untuk menghuraikan objek JSON, mengekalkan objek bersarang sebagai rentetan atau tatasusunan bait dan mengelakkan penetapan medan automatik.
Untuk mencapai ini, pakej pengekodan/json menyediakan json.RawMessage taip. Seperti yang diterangkan dalam dokumentasi, json.RawMessage ialah objek JSON yang dikodkan mentah yang boleh digunakan untuk menangguhkan atau prakiraan penyahkodan JSON.
Begini cara menggunakan json.RawMessage untuk mengendalikan objek bersarang dalam rentetan JSON yang disediakan:
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { var bar Bar err := json.Unmarshal([]byte(`{ "id": 15, "foo": { "foo": 123, "bar": "baz" } }`), &bar) if err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
Dalam kes ini, medan foo struct Bar akan mengandungi bait JSON mentah yang mewakili objek bersarang, dan bukannya menghuraikannya ke dalam struct Go. Outputnya akan kelihatan seperti ini:
{ID:15 Foo:[123 32 34 102 111 111 34 58 32 49 50 51 44 32 34 98 97 114 34 58 32 34 98 97 122 34 32 125]}
Dengan menggunakan json.RawMessage, anda boleh mengawal cara objek JSON bersarang dikendalikan semasa unmarshalling, membolehkan lebih fleksibiliti dalam saluran paip pemprosesan data anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Objek JSON Bersarang sebagai Rentetan atau Tatasusunan Bait dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!