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

Wie entmarshalliere ich maskierte JSON-Strings in Go mit SockJS?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-22 16:29:10729Durchsuche

How to Unmarshall Escaped JSON Strings in Go with SockJS?

Unmarshalling maskierter JSON-Strings

Beim Einsatz von Sockjs mit Go kann es zu Herausforderungen kommen, wenn JavaScript-Clients JSON-Daten als maskierte Strings übertragen. Dies kann zu Parsing-Fehlern wie „json: String kann nicht in Go-Wert vom Typ main.Msg entmarshaliert werden“ führen.

Lösung

Um dieses Problem zu umgehen, verarbeiten Sie den JSON-String mit strconv vor. Zitat aufheben. So funktioniert es:

package main

import (
    "encoding/json"
    "fmt"
    "strconv"
)

type Msg struct {
    Channel string
    Name   string
    Msg     string
}

func main() {
    var msg Msg
    val := []byte(`"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"`)

    s, _ := strconv.Unquote(string(val))

    // Unmarshal the unquoted JSON string
    err := json.Unmarshal([]byte(s), &msg)

    fmt.Println(s)
    fmt.Println(err)
    fmt.Println(msg.Channel, msg.Name, msg.Msg)
}

In diesem Beispiel verwenden wir strconv.Unquote, um die Escape-Zeichen aus der JSON-Zeichenfolge zu entfernen. Sobald es nicht mehr in Anführungszeichen gesetzt ist, fahren wir mit dem Unmarshalieren in der Msg-Struktur fort. Dieser Ansatz behebt den Parsing-Fehler und ermöglicht uns den korrekten Zugriff auf die Daten.

Das obige ist der detaillierte Inhalt vonWie entmarshalliere ich maskierte JSON-Strings in Go mit SockJS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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