Menyesuaikan Pensirilan JSON untuk Tatasusunan Jenis Campuran dalam Go
Dalam Go, tatasusunan dan kepingan asli tidak boleh mengandungi unsur jenis campuran. Walau bagaimanapun, untuk menampung senario di mana data JSON bersiri memerlukan tatasusunan heterogen, kami boleh memanfaatkan antara muka json.Marshaler dan json.Unmarshaler untuk menyesuaikan cara objek disiri dan dinyahsiri.
Struktur dengan Elemen Jenis Campuran:
Pertimbangkan struct Row dengan yang berikut medan:
type Row struct { Ooid string Score float64 Text rune }
Walaupun kami inginkan setiap struct disiri sebagai tatasusunan tiga elemen, menggunakan struct secara langsung akan menyebabkan output ditukar kepada struktur seperti kamus.
Menyesuaikan Serialisasi dengan MarshalJSON:
Untuk mengawal proses siri, kami boleh melaksanakan Antara muka json.Marshaler pada jenis Row. Di sini, kami menggunakan sekeping antara muka{} sebagai perantara untuk mengekod nilai bercampur:
func (r *Row) MarshalJSON() ([]byte, error) { arr := []interface{}{r.Ooid, r.Score, r.Text} return json.Marshal(arr) }
Menyesuaikan Deserialisasi dengan UnmarshalJSON:
Sebaliknya, untuk penyahserikatan, kita boleh melaksanakan antara muka json.Unmarshaler pada jenis Row. Sama seperti penyirian, kami menggunakan sekeping antara muka{} untuk menyimpan nilai yang dinyahsiri, yang kemudiannya diberikan kepada medan struct:
func (r *Row) UnmarshalJSON(bs []byte) error { arr := []interface{}{} json.Unmarshal(bs, &arr) // TODO: handle errors if necessary r.Ooid = arr[0].(string) r.Score = arr[1].(float64) r.Text = arr[2].(string) return nil }
Contoh:
Pertimbangkan struktur JSON berikut:
[ ["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"] ]
Menggunakan siri tersuai kami dan fungsi penyahserikatan, kami boleh menukar data JSON ini kepada sekeping elemen Baris dan kemudian kembali ke dalam struktur JSON asal, mengekalkan format tatasusunan heterogen.
Ringkasnya, dengan menyesuaikan pensirilan dan penyahserikatan, kami memperkasakan pembangun Go untuk mengendalikan struktur data JSON yang kompleks yang termasuk tatasusunan dengan jenis bercampur, memberikan fleksibiliti dan keserasian dengan pelbagai format data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Tatasusunan Jenis Campuran dalam Pensirian dan Penyahserikatan JSON dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!