Heim > Backend-Entwicklung > Golang > Wie geht man mit Go effektiv mit NULL-Werten in JSON und SQL um?

Wie geht man mit Go effektiv mit NULL-Werten in JSON und SQL um?

DDD
Freigeben: 2024-12-31 01:52:09
Original
225 Leute haben es durchsucht

How to Handle NULL Values in JSON and SQL Effectively with Go?

JSON- und NULL-Werte in SQL mit Go

Der Umgang mit NULL-Werten in SQL-Datenbanken kann eine Herausforderung sein, insbesondere bei der Arbeit mit JSON. In Go unterstützen Typen wie Int64 und String grundsätzlich keine NULL-Werte, sodass Wrapper-Typen wie sql.NullInt64 und sql.NullString erforderlich sind.

Allerdings, wenn diese Wrapper-Typen in Strukturen und JSON verwendet werden Wird mithilfe des JSON-Pakets generiert, weicht das resultierende JSON-Format aufgrund der zusätzlichen Verschachtelung, die durch die Struktur des Wrappers eingeführt wird, von den Erwartungen ab Natur.

Lösung des Problems

Um dieses Problem zu lösen, besteht eine praktikable Lösung in der Erstellung benutzerdefinierter Typen, die den Schnittstellen json.Marshaller und json.Unmarshaler entsprechen. Durch die Einbettung des Typs sql.NullInt64 bleiben die Vorteile von SQL-Methoden erhalten und gleichzeitig wird die JSON-Verarbeitung angepasst. Hier ist ein Beispiel:

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 {
    // Unmarshalling into a pointer detects null values
    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

Durch die Verwendung des benutzerdefinierten Typs JsonNullInt64 anstelle von sql.NullInt64 entspricht die JSON-Codierung den Erwartungen.

Das obige ist der detaillierte Inhalt vonWie geht man mit Go effektiv mit NULL-Werten in JSON und SQL 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage