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

Susan Sarandon
Lepaskan: 2024-10-30 06:45:28
asal
981 orang telah melayarinya

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>
Salin selepas log masuk

Proses Unmarshaling

Rentetan JSON ini:

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!