Problem:
Beim Parsen von Websocket-Daten im JSON-Format können Benutzer auf Fehler stoßen aufgrund verschachtelter codierter JSON-Zeichenfolgen, die die JSON-Syntax verletzen. Beispielsweise kann der Zeichenfolgenwert eines „Text“-Felds HTML-Entitäten wie „“ und „<“ enthalten, was dazu führt, dass der Decoder fehlschlägt.
Lösung:
Um verschachtelte codierte Zeichenfolgen in JSON verarbeiten zu können, muss die Anwendung die Daten in zwei Teile dekodieren Schritte:
Hier ist ein Beispiel-Codeausschnitt, der diesen Ansatz demonstriert:
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"` } // Input JSON string str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"https://play.spotify.com/browse\",\"time\":1455397119}}"]}` var m main if err := json.Unmarshal([]byte(str), &m); err != nil { log.Fatal(err) } var args arg if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil { log.Fatal(err) }In diesem Beispiel wird der erste Durchgang durch Dekodierung der äußeren JSON-Zeichenfolge in die Hauptstruktur durchgeführt, die enthält die Felder „name“ und „args“. Das Feld „args“ wird dann im zweiten Durchgang als separate JSON-Zeichenfolge analysiert, wobei die HTML-Entitäten entfernt und als gültiges arg-Objekt wiederhergestellt werden. Dieser Ansatz stellt sicher, dass alle JSON-Daten korrekt verarbeitet werden und Fehler vermieden werden.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit verschachtelten codierten Zeichenfolgen in JSON-Websocket-Daten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!