Maison > Article > développement back-end > 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!