Maison > développement back-end > Golang > Comment débloquer des structures JSON inattendues dans Go ?

Comment débloquer des structures JSON inattendues dans Go ?

Susan Sarandon
Libérer: 2024-11-25 12:11:15
original
877 Les gens l'ont consulté

How to Unmarshal Unexpected JSON Structures in Go?

Démarshaling de données JSON de format inconnu

Face à des données JSON qui possèdent une structure imprévisible et des clés variables, cela présente le défi de démarshaler dans des structures Go. Cet article explique comment gérer efficacement de tels scénarios.

Solution

Pour résoudre ce problème, deux approches sont recommandées :

Approche 1 : Utiliser une variable Map

Lorsque les clés sont inconnues, l'utilisation d'une variable map[string]interface{} est une option appropriée pour décomplexer la charge utile JSON.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)
Copier après la connexion

Ici, la variable cartographique « notes » contiendra les données non marshalées, où les clés représentent les noms de sujets inconnus, et les valeurs sont des cartes composées des noms des étudiants et de leurs notes.

Approche 2 : Ignorer les clés inconnues avec la balise JSON

Si une structure est préférable, elle peut être annotée avec la balise json:"-" pour ignorer des champs spécifiques lors du marshaling et du démarshaling JSON. Cela permet à la structure de conserver les données non marshalées tout en excluant les clés inconnues.

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
Copier après la connexion

Dans ce cas, la structure "GradeData" contient uniquement le champ "Notes", qui est une carte des noms de sujets et des étudiants. notes, mais les noms de clés d'origine du JSON ne sont pas présents. La balise JSON garantit que les champs de la structure s'alignent sur le format de sortie souhaité.

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