Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Unmarshal Nested JSON dengan Kekunci Dinamik Menggunakan Go?

Bagaimana untuk Unmarshal Nested JSON dengan Kekunci Dinamik Menggunakan Go?

DDD
DDDasal
2024-11-22 06:52:15188semak imbas

How to Unmarshal Nested JSON with Dynamic Keys Using Go?

Menyahmarshall Nested JSON dengan Dynamic Keys

Dalam struktur JSON yang kompleks, menghadapi objek bersarang dengan kekunci yang berubah secara dinamik boleh menimbulkan cabaran semasa unmarshalling. Pertimbangkan data JSON berikut:

{
  "message": {
    "Server1.example.com": [
      {
        "application": "Apache",
        "host": {
          "name": "/^Server-[13456]/"
        },
        "owner": "User1",
        "project": "Web",
        "subowner": "User2"
      }
    ],
    "Server2.example.com": [
      {
        "application": "Mysql",
        "host": {
          "name": "/^Server[23456]/"
        },
        "owner": "User2",
        "project": "DB",
        "subowner": "User3"
      }
    ]
  },
  "response_ms": 659,
  "success": true
}

Penyelesaian:

Untuk menghapuskan JSON sedemikian dengan berkesan, pertimbangkan untuk menggunakan peta[rentetan]ServerStruct untuk objek bersarang dengan kekunci dinamik . Pendekatan ini membenarkan kemasukan berbilang pelayan dengan nama yang tidak diketahui.

Berikut ialah contoh struct yang dikemas kini:

type YourStruct struct {
    Success bool
    ResponseMS int
    Servers map[string]*ServerStruct
}

type ServerStruct struct {
    Application string
    Owner string
    [...]
}

Dengan menambahkan tag JSON, anda boleh mengarahkan penyahkod untuk memetakan JSON tertentu medan ke medan struct yang sepadan. Berikut ialah teg yang dikemas kini:

type YourStruct struct {
    Success  `json:"success"`
    ResponseMS `json:"response_ms"`
    Servers  `json:"-"`
}

type ServerStruct struct {
    Application string `json:"application"`
    Owner string `json:"owner"`
    [...]
}

Teg json:"-" pada medan "Pelayan" memastikan penyahkod melangkau pemetaan medan JSON terus ke medan "ServerStruct". Sebaliknya, ia memetakan medan ke peta[rentetan]ServerStruct.

Pendekatan ini menyediakan penyelesaian yang fleksibel untuk membongkar objek JSON bersarang dengan kekunci dinamik, membolehkan anda mengakses data dalam setiap objek pelayan dengan mudah.

Atas ialah kandungan terperinci Bagaimana untuk Unmarshal Nested JSON dengan Kekunci Dinamik Menggunakan 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