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!