L'objectif est de démarshaler une chaîne JSON contenant un mélange de noms connus et des paires clé/valeur inconnues dans une structure Go. Les champs connus doivent être désorganisés en champs de structure spécifiques, tandis que les champs inconnus doivent être stockés sous la forme d'une collection de paires clé/valeur au sein de la structure.
Pour y parvenir, une structure peut être défini avec une combinaison de champs connus et une tranche de cartes :
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
Cette chaîne JSON :
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
peut être démarshalée à l'aide des éléments suivants étapes :
Alternativement, au lieu d'utiliser une structure, le JSON peut être démarshalé directement dans une map[string]interface{}, qui donnera accès à toutes les paires clé/valeur sous forme de collection dynamique.
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
Le choix entre utiliser une structure ou une carte dépend des exigences spécifiques de l'application. Si des champs connus prédéfinis et une approche structurée sont souhaités, une structure convient. Si la nature exacte des champs inconnus n'est pas connue à l'avance, ou si une structure de données dynamique plus flexible est requise, une carte est une option viable.
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!