


Wie gehe ich mit nicht standardmäßigen Zeitformaten beim JSON-Parsing um?
Nov 09, 2024 am 05:03 AMParsing nicht standardmäßiger Zeitformate in JSON
In typischen JSON-Parsing-Szenarien wird erwartet, dass Zeitwerte dem RFC 3339-Format („2006-01-02T15 :04:05Z07:00"). Beim Umgang mit nicht standardmäßigen Zeitformaten stößt der Standard-JSON-Decoder jedoch auf Probleme.
Um dieses Problem zu lösen, können benutzerdefinierte Marshall- und Unmarshal-Methoden für einen benutzerdefinierten Datentyp implementiert werden, der das nicht standardmäßige Zeitformat darstellt. Zum Beispiel:
// Create a type alias for the non-standard time format type JsonBirthDate time.Time // Implement UnmarshalJSON to handle conversion from JSON string to time.Time func (j *JsonBirthDate) UnmarshalJSON(b []byte) error { s := strings.Trim(string(b), "\"") t, err := time.Parse("2006-01-02", s) if err != nil { return err } *j = JsonBirthDate(t) return nil } // Implement MarshalJSON to handle conversion from time.Time to JSON string func (j JsonBirthDate) MarshalJSON() ([]byte, error) { return json.Marshal(time.Time(j)) }
Jetzt diesen benutzerdefinierten Typ in die Person-Struktur integrieren:
type Person struct { Name string `json:"name"` BirthDate JsonBirthDate `json:"birth_date"` }
Durch die Verwendung dieser benutzerdefinierten Methoden kann der JSON-Decoder nun die nicht standardmäßige Zeit erfolgreich analysieren Format:
person := Person{} decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&person); err != nil { log.Println(err) }
Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht standardmäßigen Zeitformaten beim JSON-Parsing um?. 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 Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

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

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

Wie schreibe ich Dateien in Go Language bequem?

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