Maison > développement back-end > Golang > Comment décoder une chaîne JSON contenant des chaînes codées en JSON imbriquées ?

Comment décoder une chaîne JSON contenant des chaînes codées en JSON imbriquées ?

Barbara Streisand
Libérer: 2024-12-06 04:08:18
original
312 Les gens l'ont consulté

How to Decode a JSON String Containing Nested JSON-Encoded Strings?

Décoder JSON avec les chaînes codées en JSON incluses

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)
}
Copier après la connexion

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!

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