Heim >Backend-Entwicklung >Golang >Wie glätte ich die JSON-Ausgabe einer Go-Struktur, die sql.NullString enthält?
Gegeben eine Go-Struktur, die einen sql.NullString enthält, führt das Marshallen der Struktur mithilfe von binding/json zu Ergebnissen ein verschachteltes Objekt anstelle des gewünschten abgeflachten Werts.
type Company struct { ID int `json:"id"` Abn sql.NullString `json:"abn,string"` }
Für Das Marshallen einer solchen Struktur führt beispielsweise zu einer Ausgabe wie:
{ "id": "68", "abn": { "String": "SomeABN", "Valid": true } }
Die gewünschte Ausgabe wird jedoch reduziert:
{ "id": "68", "abn": "SomeABN" }
Anpassen der MarshalJSON-Methode für Der NullString-Typ ermöglicht durch die Definition eines neuen Typs eine kontrolliertere Ausgabe.
type MyNullString struct { sql.NullString } func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil } type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
Durch die Implementierung von json.Marshaler-Schnittstelle kann der Typ MyNullString steuern, wie er als JSON dargestellt wird. Wenn es nicht null ist, wird die zugrunde liegende Zeichenfolge zurückgegeben, und für Nullwerte wird eine literale „Null“-Zeichenfolge zurückgegeben.
Das im Code-Playground bereitgestellte Beispiel zeigt das gewünschte Verhalten:
https://play.golang.org/p/Ak_D6QgIzLb
Diese Lösung vereinfacht die Ausgabe, indem sie das Feld „Gültig“ ignoriert und den Zeichenfolgenwert direkt zurückgibt.
Das obige ist der detaillierte Inhalt vonWie glätte ich die JSON-Ausgabe einer Go-Struktur, die sql.NullString enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!