Unmarshalling eingebetteter Strukturen in Go
Dieser Artikel befasst sich mit dem Problem des Unmarshallings von JSON-Daten in eine Struktur, die eine eingebettete Struktur enthält. Das bereitgestellte Beispiel, in dem die Inner-Struktur in die Outer-Struktur eingebettet ist, zeigt, dass die standardmäßige UnmarshalJSON-Methode für Inner aufgerufen wird und nur das Datenfeld ausgefüllt wird, während das Num-Feld von Outer leer bleibt.
Der Grund denn dieses Verhalten liegt im eingebetteten Strukturmechanismus von Go. Wenn eine eingebettete Struktur entmarshallt wird, zielt der Unmarshalling-Prozess direkt auf die eingebettete Struktur ab und ignoriert die Felder der äußeren Struktur.
Um dieses Problem zu beheben, wird eine einfachere und effizientere Lösung vorgeschlagen: die innere Struktur zu einem expliziten Feld zu machen in der Outer-Struktur.
Durch die explizite Deklaration von Inner als Feld wird die UnmarshalJSON-Methode der Outer-Struktur mit den gesamten JSON-Daten aufgerufen. Innerhalb dieser Methode kann das Datenfeld von Inner mit der UnmarshalJSON-Methode der eingebetteten Inner-Struktur gefüllt werden, während das Num-Feld separat gefüllt werden kann. Dieser Ansatz stellt sicher, dass beide Felder der äußeren Struktur während des Unmarshallings ordnungsgemäß gefüllt werden.
Hier ist ein funktionierendes Beispiel zur Veranschaulichung der Lösung:
<code class="go">type Outer struct { I Inner // Inner as explicit field Num int `json:"Num"` }</code>
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich eingebettete Strukturen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!