Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Pasangan Kunci/Nilai Arbitrari ke dalam Go Struct?

Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Pasangan Kunci/Nilai Arbitrari ke dalam Go Struct?

Susan Sarandon
Susan Sarandonasal
2024-10-30 06:45:281061semak imbas

How Can I Unmarshal JSON with Arbitrary Key/Value Pairs into a Go Struct?

Menyahmarshall JSON dengan Pasangan Kunci/Nilai Arbitrari ke Struktur

Pernyataan Masalah

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.

Penyelesaian

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>

Proses Unmarshaling

Rentetan JSON ini:

<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>

boleh dinyahmarshall menggunakan yang berikut langkah:

  1. Buat contoh struct Message.
  2. Nyahmarshal rentetan JSON ke dalam struct.
  3. Lelaran pada objek JSON mentah selepas menyahmarseling dan mengekstrak kunci dan nilai medan yang tidak diketahui.
  4. Simpan setiap pasangan kunci/nilai yang tidak diketahui dalam peta baharu dan tambahkannya pada medan Tidak diketahui dalam struct.

Penyelesaian Alternatif

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>

Kesimpulan

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!

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