Heim > Backend-Entwicklung > Golang > Wie gehe ich mit SQL-NULL-Werten im Go JSON Marshalling um?

Wie gehe ich mit SQL-NULL-Werten im Go JSON Marshalling um?

Mary-Kate Olsen
Freigeben: 2025-01-03 01:47:43
Original
967 Leute haben es durchsucht

How to Handle SQL NULL Values in Go JSON Marshalling?

JSON-Behandlung von SQL-NULL-Werten in Go

Beim Arbeiten mit nullbaren SQL-Datentypen in Go werden häufig die sql.Nullxxx-Typen verwendet um Nullwerte zuzulassen. Dies kann jedoch zu Formatierungsproblemen führen, wenn solche Strukturen mithilfe des JSON-Pakets in JSON kodiert werden.

Standardmäßig werden sql.Nullxxx-Typen aufgrund ihrer Strukturnatur als Objekte mit einer zusätzlichen Ebene gemarshallt. Dies kann zu einer unerwünschten JSON-Ausgabe führen. Um dieses Problem zu beheben, sollten Sie die Implementierung der Schnittstellen json.Marshaller und json.Unmarshaler für einen benutzerdefinierten Typ in Betracht ziehen, der den Typ sql.Nullxxx einbettet.

Zum Beispiel kann der folgende Typ JsonNullInt64 zum Codieren von sql.NullInt64-Werten als verwendet werden null oder ganze Zahlen:

type JsonNullInt64 struct {
    sql.NullInt64
}

func (v JsonNullInt64) MarshalJSON() ([]byte, error) {
    if v.Valid {
        return json.Marshal(v.Int64)
    } else {
        return json.Marshal(nil)
    }
}

func (v *JsonNullInt64) UnmarshalJSON(data []byte) error {
    var x *int64
    if err := json.Unmarshal(data, &x); err != nil {
        return err
    }
    if x != nil {
        v.Valid = true
        v.Int64 = *x
    } else {
        v.Valid = false
    }
    return nil
}
Nach dem Login kopieren

Bei Verwendung des Typs JsonNullInt64 ist es wird in der erwarteten Weise codiert, was eine ordnungsgemäße JSON-Darstellung ohne die zusätzliche Ebene ermöglicht.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit SQL-NULL-Werten im Go JSON Marshalling um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage