Maison > développement back-end > Golang > Comment gérer les clés JSON dynamiques lors du démarshalage dans Go ?

Comment gérer les clés JSON dynamiques lors du démarshalage dans Go ?

Susan Sarandon
Libérer: 2024-12-07 13:02:13
original
733 Les gens l'ont consulté

How to Handle Dynamic JSON Keys During Unmarshaling in Go?

Gestion dynamique des clés dans le démarshaling JSON : GoLang

Dans GoLang, le démarshaling des données JSON dans une structure peut devenir difficile lorsque les clés du JSON sont dynamiques ou ne peuvent pas être directement mappés à un champ spécifique dans la structure. Cet article présente une solution à ce problème en introduisant l'utilisation d'une carte pour capturer les clés dynamiques et leurs valeurs associées.

Description du problème :

Considérez la structure suivante :

type X struct {
 A string `json:"a_known_string"`
 B string `json:"b_known_string"`
}
Copier après la connexion

et une chaîne JSON :

"{
 "any string" : {
   "a_known_string" : "some value",
   "b_known_string" : "another value" 
 }
}"
Copier après la connexion

Utilisation du JSON standard La fonction Unmarshal avec la structure ne capturerait pas la clé dynamique, "n'importe quelle chaîne".

Solution utilisant une carte :

Pour résoudre ce problème, nous pouvons utiliser une carte pour stocker les paires clé-valeur dynamiques. Voici un exemple :

var m map[string]X
err := json.Unmarshal([]byte(jsnStr), &m)
Copier après la connexion

Dans cette solution, la variable m sera une carte où les clés sont les chaînes dynamiques et les valeurs sont des instances de la structure X.

Cette approche nous permet de capturer les clés dynamiques et leurs valeurs correspondantes tout en conservant une représentation structurée des données.

Aire de jeu Exemple :

L'exemple de terrain de jeu fourni démontre l'utilisation de la solution :

https://go.dev/play/p/tZ27zKhI9Ct

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