Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Kunci JSON Arbitrari dalam Go Structs?

Bagaimana untuk Mengendalikan Kunci JSON Arbitrari dalam Go Structs?

DDD
DDDasal
2024-11-26 16:04:10943semak imbas

How to Handle Arbitrary JSON Keys in Go Structs?

Mengendalikan Kekunci JSON Arbitrari dalam Go Structs

Respons JSON anda mengandungi pelbagai kekunci yang tidak boleh ditakrifkan secara statik dalam struct Go. Untuk menangani perkara ini, pertimbangkan untuk menggunakan struktur data peta yang membenarkan pasangan nilai kunci dinamik.

Menggunakan Peta untuk Kekunci Dinamik

Kod berikut mentakrifkan struct yang menggunakan peta untuk mewakili pasangan nilai kunci arbitrari:

type Items map[string][]ImageUrl

Di sini, Item ialah peta yang memetakan rentetan (kunci dalam JSON) kepada kepingan struktur ImageUrl. Setiap struct ImageUrl mewakili satu URL imej dengan dimensinya.

Penggunaan Contoh

Versi kod anda yang diubah suai ini menggambarkan cara menggunakan struct Item:

type ImageUrl struct {
    Url string
    Width, Height int
}

type Items map[string][]ImageUrl

func main() {
    json := `{"items":
[{"name": "thing",
  "image_urls": {
    "50x100": [{
      "url": "http://site.com/images/1/50x100.jpg",
      "width": 50,
      "height": 100
    }, {
      "url": "http://site.com/images/2/50x100.jpg",
      "width": 50,
      "height": 100
    }],
    "200x300": [{
      "url": "http://site.com/images/1/200x300.jpg",
      "width": 200,
      "height": 300
    }],
    "400x520": [{
      "url": "http://site.com/images/1/400x520.jpg",
      "width": 400,
      "height": 520
    }]
  }
}
}`

    var items Items
    if err := json.Unmarshal([]byte(json), &items); err != nil {
        // Handle error
    }

    fmt.Println(items) // Prints the map containing the keys and values
}

Dalam contoh ini, fungsi json.Unmarshal akan mengisi secara automatik peta Item dengan yang sesuai pasangan kunci-nilai. Anda kemudiannya boleh mengakses dan memanipulasi data seperti yang diperlukan.

Nota: Pendekatan ini menganggap bahawa kunci bersarang dalam JSON anda adalah konsisten. Jika tidak demikian, anda mungkin perlu menggunakan struktur data yang lebih kompleks, seperti peta bersarang atau kepingan peta.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Kunci JSON Arbitrari dalam Go Structs?. 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