Heim > Backend-Entwicklung > Golang > Wie kann ich das time.Time-Layout beim Marshalling an JSON in Golang anpassen?

Wie kann ich das time.Time-Layout beim Marshalling an JSON in Golang anpassen?

Patricia Arquette
Freigeben: 2024-11-03 03:55:02
Original
693 Leute haben es durchsucht

How can I customize the time.Time layout when marshalling to JSON in Golang?

Anpassen des Time.Time-Layouts für JSON-Marshalling

Im Encoding/JSON-Paket von Golang ist das Standardlayout für time.Time-Werte „2006“. -01-02T15:04:05Z". Es ist jedoch möglich, dieses Layout zu überschreiben, um eine benutzerdefinierte Formatierungszeichenfolge zu verwenden.

Lösung:

Um das von json.Marshal für time.Time-Felder verwendete Layout zu überschreiben können Sie einen neuen Typ definieren, der time.Time einbettet und die MarshalText-Schnittstelle implementiert. Diese Schnittstelle definiert eine Methode, die die Bytedarstellung des Werts zurückgibt. Der folgende Code zeigt, wie dies erreicht wird:

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "time"
)

type jsonTime struct {
    time.Time
    f string
}

func (j jsonTime) format() string {
    return j.Time.Format(j.f)
}

func (j jsonTime) MarshalText() ([]byte, error) {
    return []byte(j.format()), nil
}

func (j jsonTime) MarshalJSON() ([]byte, error) {
    return []byte(`"` + j.format() + `"`), nil
}

func main() {
    jt := jsonTime{time.Now(), time.Kitchen}
    x := map[string]interface{}{
        "foo": jt,
        "bar": "baz",
    }
    data, err := json.Marshal(x)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s", data)
}</code>
Nach dem Login kopieren

In diesem Code bettet die jsonTime-Struktur einen time.Time-Wert ein und definiert eine benutzerdefinierte format()-Methode, um die Zeit als Zeichenfolge mit dem angegebenen Layout zurückzugeben . Es implementiert außerdem die Schnittstellen MarshalText und MarshalJSON, um die benutzerdefinierte Zeichenfolgendarstellung während des JSON-Marshallings zurückzugeben.

Mit diesem Ansatz können Sie das für time.Time-Werte in der JSON-Ausgabe verwendete Layout steuern und es entsprechend Ihren Anforderungen anpassen Anforderungen.

Das obige ist der detaillierte Inhalt vonWie kann ich das time.Time-Layout beim Marshalling an JSON in Golang anpassen?. 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