Heim > Backend-Entwicklung > Golang > Wie entmarshalliere ich maskierte JSON-Strings in Go?

Wie entmarshalliere ich maskierte JSON-Strings in Go?

Patricia Arquette
Freigeben: 2024-12-26 16:55:14
Original
800 Leute haben es durchsucht

How to Unmarshall Escaped JSON Strings in Go?

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage