Maison >développement back-end >Golang >Comment décoder une chaîne JSON contenant des chaînes codées en JSON imbriquées ?
Problème
Lors de la tentative de décodage d'une chaîne JSON contenant un JSON imbriqué objet, l'application reçoit une erreur : "caractère 'h' invalide après la clé de l'objet : valeur paire."
Solution
L'erreur est provoquée par un caractère non valide dans la valeur de l'objet JSON imbriqué. Pour décoder correctement le JSON, cela doit être effectué en deux étapes :
type main struct { Name string `json:"name"` Args []string `json:"args"` } type arg struct { Method string `json:"method"` Params par `json:"params"` } type par struct { Channel string `json:"channel,omitempty"` Name string `json:"name,omitempty"` NameColor string `json:"nameColor,omitempty"` Text string `json:"text,omitempty"` Time int64 `json:"time,omitempty"` } // Parse input JSON string str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"<a href=\\"https://play.spotify.com/browse\\" target=\\"_blank\\">https://play.spotify.com/browse</a>\",\"time\":1455397119}}"]}` var m main if err := json.Unmarshal([]byte(str), &m); err != nil { log.Fatal(err) } // Decode nested JSON object var args arg if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil { log.Fatal(err) }
La première étape décode l'objet JSON externe en une structure principale, qui contient un tableau de chaînes. La deuxième étape parcourt le tableau et décode chaque chaîne en tant qu'objet JSON imbriqué. Cela permet à l'application d'analyser correctement les données JSON et d'éviter l'erreur.
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!