Dalam dunia penyahkodan JSON, ada kalanya anda mungkin menghadapi objek bersarang yang anda tidak perlukan sepenuhnya menghuraikan. Sebaliknya, anda mungkin lebih suka menganggapnya sebagai rentetan mentah atau tatasusunan bait. Berikut ialah kod sampel yang menunjukkan pendekatan ini:
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { jsonStr := []byte(`{ "id" : 15, "foo" : { "foo": 123, "bar": "baz" } }`) var bar Bar if err := json.Unmarshal(jsonStr, &bar); err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
Dalam contoh ini, struct Bar mengandungi dua medan: ID dan Foo. Medan ID ialah int64, manakala medan Foo diisytiharkan sebagai json.RawMessage. Jenis ini membolehkan kami menahan bait JSON yang dikaitkan dengan objek bersarang.
Apabila menyahkod JSON, medan RawMessage akan menyimpan bait JSON mentah yang mewakili objek bersarang. Ini termasuk mana-mana medan bersarang dalam objek itu, membolehkan anda mengaksesnya kemudian jika perlu.
Pendekatan ini berguna apabila anda ingin menangguhkan penghuraian bahagian tertentu JSON untuk menyimpan sumber pengiraan. Ia juga memberikan fleksibiliti yang lebih besar dalam mengendalikan objek bersarang tanpa perlu menentukan jenis tersuai untuk setiap objek.
Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Objek JSON Bersarang ke dalam Data Mentah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!