Maison > Article > développement back-end > Comment gérer les messages WebSocket JSON entrants avec différentes structures dans Golang ?
La sérialisation et la désérialisation des données JSON sont cruciales dans la communication WebSocket. Dans Go, la bibliothèque Websocket gorilla offre un moyen pratique d'envoyer et de recevoir des messages JSON. Cependant, lorsqu'il s'agit de plusieurs structures, déterminer leur type peut devenir un défi.
Pour gérer ce scénario, envisagez d'utiliser une structure de message générique comme ci-dessous :
type Messages struct { Control string `json:"control"` X json.RawMessage }
Dans cette structure, Control spécifie le type du message entrant, tandis que X est un champ non typé pouvant contenir les données réelles.
Pour gérer le message entrant, suivez ces étapes :
Lisez le message dans une structure Messages :
var m Messages err := c.ReadJSON(&m) if err != nil { // handle error }
En fonction de la valeur de Control, déterminez le type de données :
switch m.Control { case "Foo": var foo Foo if err := json.Unmarshal([]byte(m.X), &foo); err != nil { // handle error } // do something with foo } ... // Handle other cases similarly
En utilisant json.RawMessage, vous gagnez en flexibilité dans la gestion de plusieurs données genres. Cette approche vous permet de désérialiser dynamiquement les messages entrants en fonction de leur type spécifié.
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!