Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran dalam Go?

Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 09:29:10182semak imbas

How to Serialize a Mixed-Type JSON Array in Go?

Sirikan Tatasusunan JSON Jenis Campuran dalam Go

In Go, mensiri tatasusunan heterogen rentetan, nombor titik terapung dan aksara unikod ke dalam tatasusunan JSON mungkin kelihatan mencabar kerana kekurangan sokongan terbina dalam untuk tatasusunan jenis campuran. Walau bagaimanapun, dengan melaksanakan antara muka json.Marshaler, kita boleh menyesuaikan cara objek disiri untuk mencapai matlamat ini.

Melaksanakan Kaedah MarshalJSON

Untuk mensiri struktur seperti Row as tatasusunan, kami mencipta kaedah MarshalJSON pada jenis Row. Kaedah ini menukar struct Row ke dalam tatasusunan nilai antara muka generik dan kemudian mensirikannya menggunakan json.Marshal:

func (r *Row) MarshalJSON() ([]byte, error) {
    arr := []interface{}{r.Ooid, r.Score, r.Text}
    return json.Marshal(arr)
}

Contoh Penggunaan

Dengan kaedah MarshalJSON dalam tempat, kita boleh mensirikan sepotong elemen Baris ke dalam JSON yang sah tatasusunan:

rows := []Row{{"ooid1", 2.0, "Söme text"}, {"ooid2", 1.3, "Åther text"}}
marshalled, _ := json.Marshal(rows)

// Output:
// {"results": [["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"]]}

Menyahmarshaler daripada JSON

Jika perlu, kami juga boleh melaksanakan antara muka json.Unmarshaler untuk menyahsiri data JSON kembali ke dalam struct Row. Ini melibatkan pendekatan yang sama menggunakan kepingan perantaraan nilai antara muka untuk menyimpan nilai yang diekstrak daripada tatasusunan JSON:

func (r *Row) UnmarshalJSON(bs []byte) error {
    arr := []interface{}{}
    json.Unmarshal(bs, &arr)
    // TODO: add error handling here.
    r.Ooid = arr[0].(string)
    r.Score = arr[1].(float64)
    r.Text = arr[2].(string)
    return nil
}

Dengan melaksanakan antara muka json.Marshaler dan json.Unmarshaler, kami boleh mensiri dan menyahsiri secara berkesan tatasusunan jenis bercampur dalam Go, membolehkan kami memanipulasi struktur data dengan elemen heterogen sebagai JSON.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn