Maison >développement back-end >Golang >Comment analyser efficacement JSON avec plusieurs types de messages dans Go ?

Comment analyser efficacement JSON avec plusieurs types de messages dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-21 12:02:11127parcourir

How to Efficiently Parse JSON with Multiple Message Types in Go?

Analyse JSON dans Golang sans démarshaling redondant

Lorsque vous traitez des données JSON contenant différents types de messages, le démarshaling directement dans des types de structure connus peut ne pas être possible. Au lieu de cela, un processus en deux étapes peut être utilisé pour résoudre ce problème.

Étape 1 : Désassembler dans une carte générique

Désassembler l'objet JSON dans une carte générique[ string]interface{} pour récupérer les clés et les valeurs de niveau supérieur.

Étape 2 : identifier et désorganiser les éléments spécifiques Clés

Parcourez la carte et identifiez la clé correspondant au type de message souhaité. Par exemple :

switch k {
case "ping":
    // ...
case "ack":
    // ...
}

Pour chaque clé identifiée, désorganisez la valeur correspondante dans un json.RawMessage au lieu d'une interface{} :

var myAck json.RawMessage

Étape 3 : désorganisez-la dans Struct spécifique

Enfin, pour convertir le RawMessage en la structure souhaitée, directement démarshalez-le sans avoir besoin d'un processus de marshal/unmarshal intermédiaire :

err = json.Unmarshal(myAck, &myAck)

En démarshalant partiellement dans RawMessage et en évitant le démarshaling redondant, cette approche simplifie le processus et améliore l'efficacité lors de l'analyse de données JSON complexes.

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