Maison > développement back-end > Golang > Comment décoder JSON avec des chaînes codées en JSON intégrées ?

Comment décoder JSON avec des chaînes codées en JSON intégrées ?

Linda Hamilton
Libérer: 2024-12-16 09:59:11
original
165 Les gens l'ont consulté

How to Decode JSON with Embedded JSON-Encoded Strings?

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 :

  1. Analyser la structure JSON principale dans un type simplifié qui inclut le champ "args" sous forme de tranche de chaînes.
  2. Décoder chaque chaîne de la tranche "args" en tant que nouvel objet JSON en utilisant un type personnalisé qui accueille le champ "texte".
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"`
}
Copier après la connexion

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), &amp;m); err != nil {
    log.Fatal(err)
}

var args arg
if err := json.Unmarshal([]byte(m.Args[0]), &amp;args); err != nil {
    log.Fatal(err)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal