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"` }
et une chaîne JSON :
"{ "any string" : { "a_known_string" : "some value", "b_known_string" : "another value" } }"
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)
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!