Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dalam Go
Dalam kes di mana struktur objek JSON adalah dinamik, pembongkaran JSON tradisional boleh menyebabkan kehilangan data akibat pemangkasan medan. Untuk menangani perkara ini, pertimbangkan penyelesaian yang menggabungkan struct biasa dengan json.RawMessage, yang membenarkan kemas kini terpilih sambil mengekalkan maklumat yang tidak diketahui.
Struktur Warna menggambarkan pendekatan ini:
type Color struct { Space string raw map[string]json.RawMessage }
Semasa JSON unmarshalling, kaedah UnmarshalJSON membaca keseluruhan data menjadi mentah dan mendapatkan semula medan yang diingini (cth., Space) daripada mentah jika wujud:
func (c *Color) UnmarshalJSON(bytes []byte) error { if err := json.Unmarshal(bytes, &c.raw); err != nil { return err } // ... return nil }
Untuk JSON marshalling, kaedah MarshalJSON meletakkan semula medan yang diingini menjadi mentah, memastikan medan yang dikemas kini disertakan dalam output:
func (c *Color) MarshalJSON() ([]byte, error) { // ... return json.Marshal(c.raw) }
Ini pendekatan membenarkan kemas kini medan terpilih sambil mengekalkan seluruh data JSON, termasuk struktur yang tidak diketahui atau dinamik.
Atas ialah kandungan terperinci Bagaimanakah Pergi Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!