Maison >développement back-end >Golang >Comment décoder JSON avec des chaînes codées en JSON intégrées ?
Décodage JSON avec des chaînes codées en JSON intégrées
Dans le contexte de l'analyse d'une réponse JSON complexe à partir d'une API externe, un problème survient en raison à la présence de chaînes codées en JSON dans l'objet JSON. La structure JSON contient un champ appelé « texte » qui inclut une chaîne HTML. Lors de la tentative de décodage de ce JSON à l'aide d'un type personnalisé, une erreur est rencontrée.
Pour résoudre ce problème, un processus de décodage en deux étapes est nécessaire :
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"` }
Un exemple de décodage de la chaîne JSON fournie :
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) } var args arg if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil { log.Fatal(err) }
En séparant le décodage du JSON externe objet et la chaîne JSON intégrée, il devient possible de gérer correctement la structure JSON imbriquée, résolvant ainsi l'erreur de caractère non valide.
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!