Maison > développement back-end > Golang > Comment analyser JSON avec des paires clé/valeur connues et inconnues dans une structure Go ?

Comment analyser JSON avec des paires clé/valeur connues et inconnues dans une structure Go ?

DDD
Libérer: 2024-10-28 02:13:30
original
475 Les gens l'ont consulté

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

Démarrer JSON avec des paires clé/valeur arbitraires pour structurer

Problème

Comment puis-je analyser une chaîne JSON avec des paires clé/valeur connues et inconnues dans une structure Go ? Les champs inconnus peuvent avoir n'importe quel nom et type de valeur (string, bool, float64 ou int).

Solution

Créez une structure avec les champs connus et une tranche de cartes pour les champs inconnus :

<code class="go">type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}</code>
Copier après la connexion

Désorganisez la chaîne JSON dans cette structure :

<code class="go">json.Unmarshal([]byte(jsonMsg), &msg)</code>
Copier après la connexion

Le champ Inconnus contiendra une liste de cartes représentant les paires clé/valeur inconnues.

Alternatives

  1. Double Unmarshal :

    • Tout d'abord, désorganisez-vous dans une structure temporaire contenant uniquement les champs connus.
    • Ensuite, désassemblez à nouveau dans une map[string]interface{} et extrayez les valeurs inconnues manuellement.
  2. Démarshal et conversion de type :

    • Unmarshal dans une interface map[string]{}.
    • Parcourez la carte et tapez affirmer les valeurs aux types appropriés.

Considérations

Les trois solutions sont valables, mais la plus simple et la plus élégante est l'approche initiale basée sur la structure. Cela évite le besoin de démaréchaux supplémentaires ou de conversions de type manuelles.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal