Maison  >  Article  >  développement back-end  >  Comment analyser un champ « ip » à partir d'une réponse HTTP JSON dans Go ?

Comment analyser un champ « ip » à partir d'une réponse HTTP JSON dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 12:59:13334parcourir

How to Parse an

Analyse des réponses HTTP JSON dans Go

Dans cet article, nous aborderons un défi de codage courant : analyser les réponses JSON à partir de requêtes HTTP dans le langage de programmation Go. Nous allons passer en revue un exemple pour vous aider à déchiffrer la réponse et à extraire des valeurs spécifiques, telles que le champ « ip ».

Considérez la sortie curl suivante comme exemple :

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

Notre objectif est de récupérer la valeur du champ "ip" à partir de cette réponse.

JSON basé sur Struct Décodage

Pour décoder la réponse JSON, nous allons créer des structures qui reflètent la structure JSON. Les structures dans Go servent de modèles pour nos données, définissant leur forme et leurs champs.

Voici un exemple de code qui illustre le décodage JSON basé sur la structure :

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)
        }
    }
}

Décoder une clé spécifique

Dans le code ci-dessus, nous utilisons une structure appelée Exemple pour correspondre à la structure de la réponse JSON. À l'aide du décodeur, nous sommes ensuite en mesure de décoder la réponse dans notre structure Exemple.

Pour extraire la valeur "ip", nous accédons à la tranche Adresses, qui est une tranche de structures Adresse. Chaque structure d'adresse contient le champ "ip", nous permettant d'imprimer sa valeur.

En suivant ces étapes, vous pouvez analyser efficacement les réponses HTTP JSON dans Go et récupérer des valeurs de données spécifiques, comme le champ "ip" dans cet exemple. N'oubliez jamais de créer des structures qui correspondent à la structure JSON et d'utiliser un décodeur pour les remplir avec les données de réponse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn