Entmarshalling von maskierten JSON-Strings mit Go
Bei der Verwendung von Sockjs mit Go können Probleme beim Parsen von maskierten JSON-Strings auftreten, die von JavaScript-Clients als [ ]Byte. Dies kann zu Fehlermeldungen wie „JSON: String kann nicht in Go-Wert entmarshaliert werden“ führen. Um dieses Problem zu beheben, können Sie eine einfache Methode verwenden, um die Zeichenfolge vor dem Unmarshalling aufzuheben.
Verwenden von strconv.Unquote
strconv.Unquote() ist eine integrierte Funktion Go-Funktion, die Escape-Zeichen aus einer Zeichenfolge entfernt. Indem Sie es auf die empfangene JSON-Zeichenfolge anwenden, können Sie die Escape-Funktion effektiv aufheben.
So können Sie es tun:
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) }
In diesem Beispiel wird die Escape-Funktion für die JSON-Zeichenfolge mit Escapezeichen mithilfe von strconv erfolgreich aufgehoben .Unquote(), und die Daten werden ohne Fehler in die Msg-Struktur geparst.
Das obige ist der detaillierte Inhalt vonWie entmarshalliere ich maskierte JSON-Strings in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!