Heim >Backend-Entwicklung >Golang >Wie dekodiere ich einen JSON-String, der verschachtelte JSON-codierte Strings enthält?

Wie dekodiere ich einen JSON-String, der verschachtelte JSON-codierte Strings enthält?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 04:08:18325Durchsuche

How to Decode a JSON String Containing Nested JSON-Encoded Strings?

JSON mit enthaltenen JSON-codierten Zeichenfolgen dekodieren

Problem

Beim Versuch, eine JSON-Zeichenfolge zu dekodieren, die ein verschachteltes JSON enthält Objekt erhält die Anwendung eine Fehlermeldung: „Ungültiges Zeichen ‚h‘ nach Objektschlüssel:Wert.“ Paar.“

Lösung

Der Fehler wird durch ein ungültiges Zeichen im Wert des verschachtelten JSON-Objekts verursacht. Um das JSON richtig zu dekodieren, muss es in zwei Schritten erfolgen:

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"`
}

// Parse input JSON string
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)
}

// Decode nested JSON object
var args arg
if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil {
    log.Fatal(err)
}

Der erste Schritt dekodiert das äußere JSON-Objekt in eine Hauptstruktur, die ein Array von Strings enthält. Der zweite Schritt durchläuft das Array und dekodiert jede Zeichenfolge als verschachteltes JSON-Objekt. Dadurch kann die Anwendung die JSON-Daten ordnungsgemäß analysieren und den Fehler vermeiden.

Das obige ist der detaillierte Inhalt vonWie dekodiere ich einen JSON-String, der verschachtelte JSON-codierte Strings enthält?. 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