Maison >développement back-end >Golang >Comment Golang peut-il détecter et gérer les attributs en double dans les chaînes JSON ?

Comment Golang peut-il détecter et gérer les attributs en double dans les chaînes JSON ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 14:37:13915parcourir

How Can Golang Detect and Handle Duplicate Attributes in JSON Strings?

Détection des attributs en double dans les chaînes JSON à l'aide de Golang

Cet article se concentre sur l'identification des attributs en double dans une chaîne JSON à l'aide de Golang. JSON (JavaScript Object Notation) est un format de données largement utilisé pour l'échange de données. La détection des doublons est essentielle pour maintenir l'intégrité des données et garantir un traitement cohérent.

Utilisation du décodeur JSON et de la fonction de détection des doublons personnalisés

Pour détecter les attributs en double, le json.Decoder est utilisé pour parcourir la chaîne JSON. La fonction de vérification est introduite, qui explore de manière récursive la structure JSON et examine les clés et les valeurs pour les doublons.

Aperçu de la mise en œuvre

  • fonction de vérification : Parcourt les jetons JSON, en distinguant les objets et tableaux.
  • Gestion des objets : Pour les objets, une carte est utilisée pour suivre les clés rencontrées, évitant ainsi les doublons. Si une clé en double est découverte, la fonction dup fournie est invoquée.
  • Gestion des tableaux : Pour les tableaux, chaque élément est examiné de manière récursive.
  • Fonction dup : Cette fonction personnalisée définit l'action à entreprendre lors de la détection d'un doublon, soit en l'imprimant, soit en renvoyant un erreur.

Exemple d'utilisation

Considérez la chaîne JSON fournie :

{"a": "b", "a":true,"c": ["field_3 string 1","field3 string2"]}

Pour imprimer les clés en double :

func printDup(path []string) error {
    fmt.Printf("Duplicate %s\n", strings.Join(path, "/"))
    return nil
}

data := ... // JSON string
if err := check(json.NewDecoder(strings.NewReader(data)), nil, printDup); err != nil {
    log.Fatal(err)
}

Détecter les erreurs en double

Pour arrêtez le parcours JSON après avoir trouvé la première clé en double :

var ErrDuplicate = errors.New("duplicate")

func dupErr(path []string) error {
    return ErrDuplicate
}

data := ... // JSON string
if err := check(json.NewDecoder(strings.NewReader(data)), nil, dupErr); err == ErrDuplicate {
    fmt.Println("found a duplicate")
}

Conclusion

Cette technique fournit une approche personnalisable et robuste pour détecter les attributs en double dans les chaînes JSON. En tirant parti de json.Decoder et en définissant une fonction de gestion des doublons personnalisée, les développeurs peuvent maintenir l'intégrité des données et garantir un traitement JSON cohérent.

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!

Déclaration:
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