Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghuraikan Medan \'ip\' daripada JSON HTTP Response dalam Go?

Bagaimana untuk Menghuraikan Medan \'ip\' daripada JSON HTTP Response dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 12:59:13360semak imbas

How to Parse an

Menghuraikan Respons HTTP JSON dalam Go

Dalam artikel ini, kami akan menangani cabaran pengekodan biasa: menghuraikan respons JSON daripada permintaan HTTP dalam bahasa pengaturcaraan Go. Kami akan melihat contoh untuk membantu anda menguraikan respons dan mengekstrak nilai tertentu, seperti medan "ip".

Pertimbangkan output curl berikut sebagai contoh:

{
  "type":"example",
  "data":{
    "name":"abc",
    "labels":{
      "key":"value"
    }
  },
  "subsets":[
    {
      "addresses":[
        {
          "ip":"192.168.103.178"
        }
      ],
      "ports":[
        {
          "port":80
        }
      ]
    }
  ]
}

Matlamat kami ialah untuk mendapatkan semula nilai medan "ip" daripada respons ini.

JSON Berasaskan Struktur Penyahkodan

Untuk menyahkod respons JSON, kami akan mencipta struktur yang mencerminkan struktur JSON. Structs dalam Go berfungsi sebagai templat untuk data kami, mentakrifkan bentuk dan medannya.

Berikut ialah kod sampel yang menunjukkan penyahkodan JSON berasaskan struct:

type Example struct {
    Type    string   `json:"type,omitempty"`
    Subsets []Subset `json:"subsets,omitempty"`
}

type Subset struct {
    Addresses []Address `json:"addresses,omitempty"`
}

type Address struct {
    IP string `json:"IP,omitempty"`
}

func main() {

    jsonResponse := `{
        "type": "example",
        "data": {
            "name": "abc",
            "labels": {
                "key": "value"
            }
        },
        "subsets": [
            {
                "addresses": [
                    {
                        "ip": "192.168.103.178"
                    }
                ],
                "ports": [
                    {
                        "port": 80
                    }
                ]
            }
        ]
    }`

    r := bytes.NewReader([]byte(jsonResponse))
    decoder := json.NewDecoder(r)

    val := &Example{}
    err := decoder.Decode(val)

    if err != nil {
        log.Fatal(err)
    }

    for _, s := range val.Subsets {
        for _, a := range s.Addresses {
            fmt.Println(a.IP)
        }
    }
}

Menyahkod Kunci Tertentu

Dalam kod di atas, kami menggunakan struct yang dipanggil Contoh untuk memadankan struktur respons JSON. Dengan menggunakan penyahkod, kami kemudiannya dapat menyahkod respons ke dalam contoh struct kami.

Untuk mengekstrak nilai "ip", kami mengakses keping Alamat, yang merupakan kepingan struct Alamat. Setiap struct Alamat mengandungi medan "ip", yang membolehkan kami mencetak nilainya.

Dengan mengikuti langkah ini, anda boleh menghuraikan respons HTTP JSON dengan berkesan dalam Go dan mendapatkan semula nilai data tertentu, seperti medan "ip" dalam contoh ini. Sentiasa ingat untuk mencipta struct yang sepadan dengan struktur JSON dan gunakan penyahkod untuk mengisinya dengan data respons.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Medan \'ip\' daripada JSON HTTP Response 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