Unmarshalling von JSON in eingebettete Strukturen in Go
Deserialisierung von JSON-Daten in eingebettete Strukturen kann in Golang eine Herausforderung darstellen. Nehmen Sie die Beispielstruktur:
<code class="go">type Outer struct { Inner Num int } type Inner struct { Data string }</code>
Bei Verwendung von json.Unmarshal(data, &Outer{}) wird nur das Inner-Feld entmarshallt und das Num-Feld ignoriert. Um zu verstehen, warum dies geschieht, ist es wichtig zu beachten, dass Inner in Outer eingebettet ist.
Während des JSON-Unmarshalings ruft die Bibliothek den Unmarshaler auf Outer auf, der wiederum den Unmarshaler auf Inner aufruft. Folglich empfängt die Inner.UnmarshalJSON-Funktion die gesamte JSON-Zeichenfolge, die sie nur für Inner verarbeitet.
Um dieses Problem zu beheben, machen Sie Inner zu einem expliziten Feld in Outer. Dadurch wird sichergestellt, dass beim JSON-Unmarshaling das innere Feld ordnungsgemäß entmarshaled wird und das Num-Feld basierend auf den JSON-Daten festgelegt wird:
<code class="go">Outer struct { I Inner // Make Inner an explicit field Num int `json:"Num"` }</code>
Diese Änderung ermöglicht das korrekte Unmarshaling von JSON-Daten in die äußere Struktur, einschließlich Sowohl das Innere als auch das Num-Feld.
Das obige ist der detaillierte Inhalt vonWarum wird mein „Num'-Feld beim Unmarshalling von JSON in eine eingebettete Struktur in Go ignoriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!