Objektifnya adalah untuk menyahmarshal rentetan JSON yang mengandungi campuran yang diketahui dan pasangan kunci/nilai yang tidak diketahui ke dalam struct Go. Medan yang diketahui harus dipisahkan kepada medan struct tertentu, manakala medan yang tidak diketahui harus disimpan sebagai koleksi pasangan kunci/nilai dalam struct.
Untuk mencapai ini, struct boleh ditakrifkan dengan gabungan medan yang diketahui dan sekeping peta:
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
Rentetan JSON ini:
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
boleh dinyahmarshall menggunakan yang berikut langkah:
Sebagai alternatif, daripada menggunakan struct, JSON boleh dibongkar terus ke dalam peta[rentetan]antara muka{}, yang akan menyediakan akses kepada semua pasangan kunci/nilai sebagai koleksi dinamik.
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
Pilihan antara menggunakan struct atau peta bergantung pada keperluan khusus aplikasi. Jika medan diketahui yang dipratentukan dan pendekatan berstruktur dikehendaki, struct adalah sesuai. Jika sifat sebenar medan yang tidak diketahui tidak diketahui terlebih dahulu atau jika struktur data dinamik yang lebih fleksibel diperlukan, peta ialah pilihan yang berdaya maju.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Pasangan Kunci/Nilai Arbitrari ke dalam Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!