Maison > développement back-end > Golang > le corps du texte

Comment gérer les types de champs JSON dynamiques lors du démarshalage ?

Patricia Arquette
Libérer: 2024-11-24 00:54:09
original
239 Les gens l'ont consulté

How Can Go Handle Dynamic JSON Field Types During Unmarshaling?

Gestion des types de champs JSON dynamiques dans Go

Lors de la désorganisation de JSON dans Go dans une structure, on peut rencontrer des incohérences dans le type de valeur d'un clé spécifique dans les requêtes API. Ce défi survient lorsque le serveur envoie différentes structures d'objet ou références de chaîne pour la même clé. Cela peut poser un problème car Go nécessite une structure fixe pour le démarshaling.

Pour résoudre ce problème, une approche dynamique de type utilisant un type d'interface peut être utilisée. Considérez les données JSON suivantes :

{
  "mykey": [
    {obj1}, 
    {obj2}
  ]
}
Copier après la connexion

Pour capturer cette nature dynamique, nous pouvons définir une structure comme suit :

type Data struct {
    MyKey []interface{} `json:"mykey"`
}
Copier après la connexion

Lorsque du JSON avec des valeurs de chaîne est rencontré, tel que :

{
  "mykey": [
    "/obj1/is/at/this/path", 
    "/obj2/is/at/this/other/path"
  ]
}
Copier après la connexion

Les éléments de tranche MyKey seront décodés sous forme de chaînes. Pour les objets, ils seront décodés sous forme de valeurs map[string]interface{}. Cette distinction peut être faite à l'aide d'un commutateur de type :

for i, v := range data.MyKey {
    switch x := v.(type) {
    case string:
        fmt.Println("Got a string: ", x)
    case map[string]interface{}:
        fmt.Printf("Got an object: %#v\n", x)
    }
}
Copier après la connexion

En désorganisant le JSON en un type d'interface et en utilisant des commutateurs de type, les développeurs Go peuvent gérer les types de champs dynamiques et analyser les données de manière appropriée, quelle que soit la structure fournie. par le serveur.

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