Menyahmarshal Data JSON ke dalam Struktur Data Tersuai
Dalam Go, selalunya perlu untuk menyahmarshal data JSON ke dalam struktur data tertentu. Ini boleh dicapai dengan mentakrifkan jenis tersuai dan melaksanakan antara muka json.Unmarshaler.
Pernyataan Masalah
Andaikan kami mempunyai data JSON dengan dua tatasusunan maklumat pesanan: Tanya dan Bida. Kami ingin menyahmarshal data ini menjadi struct dengan dua medan: Asks dan Bid, di mana setiap medan adalah sekeping struct Order.
Jenis Tersuai dan Pelaksanaan Unmarshaler
Untuk mencipta struktur data yang kami kehendaki, kami mentakrifkan jenis tersuai yang dipanggil Pesanan:
<code class="go">type Order struct { Price float64 Volume float64 }</code>
Seterusnya, kami melaksanakan antara muka json.Unmarshaler untuk jenis Pesanan. Ini membolehkan kami menentukan cara data JSON harus dihuraikan ke dalam struktur tersuai kami:
<code class="go">func (o *Order) UnmarshalJSON(data []byte) error { var v [2]float64 if err := json.Unmarshal(data, &v); err != nil { return err } o.Price = v[0] o.Volume = v[1] return nil }</code>
Pelaksanaan ini menjangkakan data JSON untuk Pesanan menjadi tatasusunan dua apungan, yang mewakili harga dan volum.
Menyahmarshal Data JSON
Dengan jenis tersuai kami dan pelaksanaan UnmarshalJSON dalam di tempat, kami kini boleh menyahmarshal data JSON seperti berikut:
<code class="go">b := []byte(`{"Asks": [[21, 1], [22, 1]] ,"Bids": [[20, 1], [19, 1]]}`) m := new(Message) if err := json.Unmarshal(b, &m); err != nil { // handle error } fmt.Println(m.Asks[0].Price) // 21</code>
Dengan melaksanakan antara muka json.Unmarshaler, kami telah mencapai matlamat kami untuk menyahmarshal data JSON ke dalam struktur data tersuai yang mewakili susunan dengan lebih tepat maklumat.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Data JSON ke dalam Struktur Data Tersuai dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!