Maison  >  Article  >  développement back-end  >  Que dois-je faire si Golang ne peut pas analyser JSON ?

Que dois-je faire si Golang ne peut pas analyser JSON ?

coldplay.xixi
coldplay.xixioriginal
2020-06-24 12:00:584117parcourir

Que dois-je faire si Golang ne peut pas analyser JSON ?

Golang ne peut pas analyser la solution json :

La mise en majuscule de la première lettre de golang signifie changer l'accès des membres Les autorisations en minuscules deviennent privées. Différents packages ne peuvent pas accéder aux membres privés d'autres packages, ce qui empêche json.Marshal (qui utilise la réflexion) de refléter le contenu.

Par exemple, si vous réimplémentez la méthode json.Marshal(hp) sous la méthode main, les variables membres de la structure peuvent être en minuscules.

Remarque : les variables membres en minuscules

struct ne sont accessibles que dans le package actuel.

Méthode d'analyse de la réponse Json de la requête HTTP Golang

Les données de réponse sont les suivantes :

{
"number": 3,
"message": "success",
"people": [{
"craft": "ISS",
"name": "Chris Cassidy"
}, {
"craft": "ISS",
"name": "Anatoly Ivanishin"
}, {
"craft": "ISS",
"name": "Ivan Vagner"
}]
}

Ce qui suit est une requête http et analyse les données json dans la structure Exemple

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"time"
)
type people struct {
Number int `json:"number"`
}
func main() {
url := "http://api.open-notify.org/astros.json"
spaceClient := http.Client{
Timeout: time.Second * 2, // Maximum of 2 secs
}
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("User-Agent", "spacecount-tutorial")
res, getErr := spaceClient.Do(req)
if getErr != nil {
log.Fatal(getErr)
}
if res.Body != nil {
    defer res.Body.Close()
}
body, readErr := ioutil.ReadAll(res.Body)
if readErr != nil {
log.Fatal(readErr)
}
people1 := people{}
jsonErr := json.Unmarshal(body, &people1)
if jsonErr != nil {
log.Fatal(jsonErr)
}
fmt.Println(people1.Number)
}

Tutoriel recommandé : "go tutoriel de langue"

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