Unmarshaling von JSON mit benutzerdefinierter Tag-Verarbeitung
Beim Versuch, JSON in eine Struktur zu entmarshalieren, kann es erforderlich sein, Felder mit benutzerdefinierten Tags unterschiedlich zu behandeln . In diesem Artikel wird ein Problem untersucht, bei dem ein Feld in einer Struktur über ein Tag verfügt, das angibt, dass das Marshaling als Zeichenfolge aufgehoben werden soll.
Problem:
Berücksichtigen Sie eine JSON-Zeichenfolge und eine entsprechende Struktur:
1 2 3 4 5 6 7 8 |
|
1 2 3 4 |
|
Das Ziel besteht darin, das „S“-Feld als Zeichenfolge und nicht als Struktur zu entmarshalieren.
Lösung:
Verwenden der Marshaler/Unmarshaler-Schnittstelle:
Go bietet eine Möglichkeit, das standardmäßige JSON-Marshalling- und Unmarshaling-Verhalten zu überschreiben, indem die Marshaler- und Unmarshaler-Schnittstellen für einen benutzerdefinierten Typ implementiert werden. Erstellen Sie in diesem Fall einen neuen Typ namens RawString und implementieren Sie diese Funktionen:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Anwenden auf die Struktur:
Ändern Sie die A-Struktur, um den RawString-Typ zu verwenden für das „S“-Feld:
1 2 3 4 |
|
Mit dieser Implementierung wird das „S“-Feld beim Unmarshaling in eine A-Struktur als String entmarshallt, wobei seine ursprüngliche JSON-Darstellung erhalten bleibt.
Beispielverwendung:
1 2 3 4 5 6 7 8 9 10 |
|
Ausgabe:
1 |
|
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON mit benutzerdefinierter Tag-Verarbeitung für die String-Darstellung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!