Heim > Backend-Entwicklung > Golang > Wie dekodiere ich verschachtelte JSON-kodierte Strings in Go?

Wie dekodiere ich verschachtelte JSON-kodierte Strings in Go?

Susan Sarandon
Freigeben: 2024-12-05 08:12:13
Original
426 Leute haben es durchsucht

How to Decode Nested JSON-Encoded Strings in Go?

JSON mit verschachtelten codierten Zeichenfolgen dekodieren

Im bereitgestellten Szenario werden WebSocket-Informationen in Form einer JSON-Antwort empfangen, die verschachteltes JSON enthält -codierte Zeichenfolgen. Das Ziel besteht darin, diesen JSON in eine benutzerdefinierte Go-Datenstruktur zu dekodieren.

Der erste Versuch der Dekodierung schlägt aufgrund eines ungültigen Zeichens im Feld „Text“ der verschachtelten JSON-Zeichenfolge fehl. Dies liegt daran, dass der Wert HTML-Markup enthält, was keine gültige JSON-Syntax ist.

Zweistufige Dekodierung

Um dieses Problem zu beheben, muss der Dekodierungsprozess durchgeführt werden in zwei Schritten:

  1. Dekodieren Sie die äußere JSON-Antwort in eine Datenstruktur, die einen Abschnitt mit Zeichenfolgen für die „Argumente“ enthält. Feld.
  2. Durchlaufen Sie das Segment „args“ und dekodieren Sie jede einzelne Zeichenfolge als JSON.

Codebeispiel

Hier ist ein aktualisierter Code Snippet, das diesen zweistufigen Dekodierungsprozess implementiert:

type main struct {
    Name string   `json:"name"`
    Args []string `json:"args"`
}

type arg struct {
    Method string `json:"method"`
    Params par    `json:"params"`
}

type par struct {
    Channel   string `json:"channel,omitempty"`
    Name      string `json:"name,omitempty"`
    NameColor string `json:"nameColor,omitempty"`
    Text      string `json:"text,omitempty"`
    Time      int64  `json:"time,omitempty"`
}

str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"<a href=\\"https://play.spotify.com/browse\\" target=\\"_blank\\">https://play.spotify.com/browse</a>\",\"time\":1455397119}}"]}`

var m main
if err := json.Unmarshal([]byte(str), &m); err != nil {
    log.Fatal(err)
}

for _, argStr := range m.Args {
    var args arg
    if err := json.Unmarshal([]byte(argStr), &args); err != nil {
        log.Fatal(err)
    }
    fmt.Println(args)
}
Nach dem Login kopieren

Dieser Code demonstriert die Verschachtelung Dekodierungsprozess, der es der Anwendung ermöglicht, die gewünschten Daten aus der JSON-Antwort zu extrahieren, die codierte Zeichenfolgen enthält.

Das obige ist der detaillierte Inhalt vonWie dekodiere ich verschachtelte JSON-kodierte 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