Heim > Backend-Entwicklung > Golang > Wie glätte ich die JSON-Ausgabe einer Go-Struktur, die sql.NullString enthält?

Wie glätte ich die JSON-Ausgabe einer Go-Struktur, die sql.NullString enthält?

Mary-Kate Olsen
Freigeben: 2024-12-02 19:20:13
Original
649 Leute haben es durchsucht

How to Flatten JSON Output from a Go struct containing sql.NullString?

Marshaling von sql.NullString für abgeflachte Ausgabe

Problem

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"`
}
Nach dem Login kopieren

Für Das Marshallen einer solchen Struktur führt beispielsweise zu einer Ausgabe wie:

{
    "id": "68",
    "abn": {
        "String": "SomeABN",
        "Valid": true
    }
}
Nach dem Login kopieren

Die gewünschte Ausgabe wird jedoch reduziert:

{
    "id": "68",
    "abn": "SomeABN"
}
Nach dem Login kopieren

Lösung

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"`
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

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