Verhindern eines Stapelüberlaufs in UnmarshalJSON durch Abfangen des Unmarshal-Aufrufs
Im Kontext benutzerdefinierter UnmarshalJSON-Implementierungen kann es erforderlich sein, zusätzliche Schritte auszuführen während der Initialisierung der Datenstruktur. Der Aufruf von json.Unmarshal() innerhalb von UnmarshalJSON kann jedoch zu einem Stapelüberlauf führen, da der JSON-Decoder wiederholt nach einer benutzerdefinierten Implementierung sucht, was zu einer unendlichen Rekursion führt.
Um dieses Problem zu vermeiden, kann die zugrunde liegende Standardimplementierung aufgerufen werden ohne die rekursive Schleife auszulösen. So geht's:
Erstellen Sie einen Zwischentyp mit dem Schlüsselwort „Type“:
Typkonvertierung und Zuweisung:
Standard-Unmarshal-Funktion aufrufen:
Nachbearbeitung (optional):
Indem Sie dies verwenden Bei dieser Technik wird die rekursive Schleife unterbrochen, da für den neuen Typ die UnmarshalJSON-Methode nicht definiert ist. Dies verhindert einen Stapelüberlauf und ermöglicht eine nahtlose Initialisierung mit zusätzlicher Verarbeitung.
Das obige ist der detaillierte Inhalt vonWie verhindert man einen Stapelüberlauf in Gos „UnmarshalJSON'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!