Lors de l'utilisation de SockJS avec Go, l'analyse des données JSON envoyées par un client JavaScript sous forme de tranche d'octets peut être gênante. Le serveur reçoit le JSON échappé, mais tente de l'analyser comme une chaîne ordinaire, ce qui entraîne l'erreur « json : impossible de transformer la chaîne en valeur Go de type main.Msg ».
La solution réside dans l'utilisation de strconv .Unquote fonction avant de tenter de désorganiser le JSON. Cette fonction supprime les caractères d'échappement, vous laissant avec une chaîne qui peut être analysée en une valeur Go.
Voici un exemple modifié :
package main import ( "encoding/json" "fmt" "strconv" ) type Msg struct { Channel string Name string Msg string } func main() { var msg Msg var val []byte = []byte(`"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"`) s, _ := strconv.Unquote(string(val)) err := json.Unmarshal([]byte(s), &msg) fmt.Println(s) fmt.Println(err) fmt.Println(msg.Channel, msg.Name, msg.Msg) }
Sortie :
{"channel":"buu","name":"john", "msg":"doe"} <nil> buu john doe
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!