Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Pelbagai Jenis Nilai JSON Apabila Menyahmarshaling dalam Go?

Bagaimana untuk Mengendalikan Pelbagai Jenis Nilai JSON Apabila Menyahmarshaling dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-18 21:07:03707semak imbas

How to Handle Varying JSON Value Types When Unmarshaling in Go?

Menyahmarshaling JSON dengan Pelbagai Jenis Nilai dalam Go

Dalam Go, JSON unmarshaling biasanya melibatkan pemetaan data JSON ke struct yang sepadan. Walau bagaimanapun, kesukaran timbul apabila struktur data boleh berbeza-beza, mempersembahkan nilai kunci sebagai tatasusunan objek atau rentetan.

Masalah:
API menyampaikan struktur data yang tidak konsisten, mengakibatkan dalam variasi nilai berpotensi untuk kunci: objek sebaris atau rujukan kepada objek (/obj1/is/at/this/path).

Penyelesaian:
Untuk mengendalikan kebolehubahan ini, pertimbangkan teknik berikut:

1. Nyahmarshal kepada Jenis Antara Muka:
Nyah marshal data JSON kepada struct yang mengandungi medan dengan jenis []antara muka{}. Ini akan membenarkan kedua-dua rentetan (dinyahkodkan sebagai rentetan) dan objek (dinyahkodkan sebagai peta[rentetan]antara muka{}) disimpan dalam tatasusunan.

Sampel Kod:

type Data struct {
    MyKey []interface{} `json:"mykey"`
}

2. Penukaran Jenis untuk Pembezaan:
Setelah data dibuka, gunakan suis jenis untuk membezakan antara rentetan dan objek.

Sampel Kod:

for i, v := range data.MyKey {
    switch x := v.(type) {
    case string:
        fmt.Println("Got a string: ", x)
    case map[string]interface{}:
        fmt.Printf("Got an object: %#v\n", x)
    }
}

Nota Tambahan:

  • Anda boleh memproses selanjutnya objek seperti yang diperlukan dengan mengakses struktur [rentetan]antara muka{} peta asas.
  • Pendekatan ini menyediakan fleksibiliti dalam mengendalikan potensi perubahan masa depan pada struktur data tanpa memerlukan sebarang pengekodan keras atau refleksi.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pelbagai Jenis Nilai JSON Apabila Menyahmarshaling 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