Heim > Backend-Entwicklung > Golang > Wie dekodiere ich JSON mit eingebetteten JSON-codierten Strings?

Wie dekodiere ich JSON mit eingebetteten JSON-codierten Strings?

Linda Hamilton
Freigeben: 2024-12-16 09:59:11
Original
173 Leute haben es durchsucht

How to Decode JSON with Embedded JSON-Encoded Strings?

JSON mit eingebetteten JSON-codierten Strings dekodieren

Im Zusammenhang mit dem Parsen einer komplexen JSON-Antwort von einer externen API tritt ein Problem auf auf das Vorhandensein von JSON-codierten Zeichenfolgen im JSON-Objekt. Die JSON-Struktur enthält ein Feld namens „text“, das eine HTML-Zeichenfolge enthält. Beim Versuch, diesen JSON mit einem benutzerdefinierten Typ zu dekodieren, ist ein Fehler aufgetreten.

Um dieses Problem zu beheben, ist ein zweistufiger Dekodierungsprozess erforderlich:

  1. Parsen Sie die JSON-Hauptstruktur in einen vereinfachten Typ umwandeln, der das Feld „args“ als einen Abschnitt von Zeichenfolgen enthält.
  2. Dekodieren Sie jeden String im Abschnitt „args“ als einen neuen JSON-Objekt unter Verwendung eines benutzerdefinierten Typs, der das Feld „Text“ unterstützt.
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"`
}
Nach dem Login kopieren

Ein Beispiel für die Dekodierung der bereitgestellten JSON-Zeichenfolge:

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), &amp;m); err != nil {
    log.Fatal(err)
}

var args arg
if err := json.Unmarshal([]byte(m.Args[0]), &amp;args); err != nil {
    log.Fatal(err)
}
Nach dem Login kopieren

Durch die Trennung der Dekodierung von Durch die Verknüpfung des äußeren JSON-Objekts und der eingebetteten JSON-Zeichenfolge wird es möglich, die verschachtelte JSON-Struktur korrekt zu verarbeiten und den Fehler durch ungültige Zeichen zu beheben.

Das obige ist der detaillierte Inhalt vonWie dekodiere ich JSON mit eingebetteten JSON-codierten Strings?. 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