


Wie kann ich das time.Time-Layout beim Marshalling an JSON in Golang anpassen?
Nov 03, 2024 am 03:55 AMAnpassen 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>
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?
