Heim >Backend-Entwicklung >Golang >Wie glätte ich die Ausgabe eines Marshalled sql.NullString in Go?
Bei einer gegebenen Golang-Struktur mit einem sql.NullString-Feld ergibt sich das standardmäßige Marshalling-Verhalten eine Ausgabe, bei der das Feld in einem JSON-Objekt mit String- und Valid-Schlüsseln verschachtelt ist. Um eine abgeflachte Ausgabe zu erhalten, die nur den Wert des NullStrings enthält, führen Sie die folgenden Schritte aus:
1. Definieren Sie einen benutzerdefinierten Typ:
Erstellen Sie einen benutzerdefinierten Typ, der sql.NullString einbettet und die json.Marshaler-Schnittstelle implementiert.
type MyNullString struct { sql.NullString }
2. Implementieren Sie die MarshalJSON-Methode:
Implementieren Sie im MyNullString die MarshalJSON-Methode, um benutzerdefiniertes JSON-Marshalling-Verhalten bereitzustellen.
func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil }
3. Ändern Sie die Struktur:
Verwenden Sie den benutzerdefinierten MyNullString-Typ für das Feld in der Struktur, das reduziert werden muss.
type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
Beispiel:
package main import ( "database/sql" "encoding/json" "log" ) 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"` } func main() { company := Company{ ID: 68, Abn: MyNullString{String: "SomeABN", Valid: true}, } result, err := json.Marshal(company) if err != nil { log.Fatal(err) } // Output: {"id":68,"abn":"SomeABN"} log.Println(string(result)) }
Indem Sie diese Schritte befolgen, können Sie die Ausgabe von sql.NullString-Feldern effektiv reduzieren und nur die erhalten Wert in Ihrem gemarshallten JSON.
Das obige ist der detaillierte Inhalt vonWie glätte ich die Ausgabe eines Marshalled sql.NullString in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!