Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich entkommene JSON-Strings in Go?

Wie entmarshaliere ich entkommene JSON-Strings in Go?

Barbara Streisand
Freigeben: 2024-12-27 16:35:09
Original
873 Leute haben es durchsucht

How to Unmarshal Escaped JSON Strings in Go?

Unmarshaling von maskierten JSON-Strings in Go

Bei der Verwendung von SockJS mit Go kann das Parsen von JSON-Daten, die von einem JavaScript-Client als Byte-Slice gesendet werden, problematisch sein. Der Server empfängt den maskierten JSON-Code, versucht ihn jedoch als gewöhnlichen String zu analysieren, was zu dem Fehler „JSON: String kann nicht in Go-Wert vom Typ main.Msg entmarshaliert werden“ führt.

Die Lösung liegt in der Verwendung von strconv .Unquote-Funktion, bevor Sie versuchen, das JSON zu entmarshalieren. Diese Funktion entfernt die Escape-Zeichen und hinterlässt eine Zeichenfolge, die in einen Go-Wert geparst werden kann.

Hier ist ein modifiziertes Beispiel:

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

Ausgabe:

{"channel":"buu","name":"john", "msg":"doe"}
<nil>
buu john doe
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich entkommene 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