Wie entmarshaliere ich XML-Felder vom Typ time.Time mit benutzerdefinierten Datumsformaten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-07 22:53:03
Original
674 Leute haben es durchsucht

How to Unmarshal XML Fields of Type time.Time with Custom Date Formats in Golang?

Unmarshalieren von XML-Feldern vom Typ time.Time in Golang

Beim Arbeiten mit dem XML-Datenabruf mithilfe der REST-API in Golang ist dies nicht der Fall Es kommt selten vor, dass ein Datumsfeld nicht dem Standardformat „time.Time“ entspricht. Diese Diskrepanz kann zu Unmarshaling-Fehlern führen, wenn versucht wird, das abgerufene Datum einem time.Time-Feld in einer GO-Struktur zuzuweisen.

Leider gibt es keine einfache Möglichkeit, das gewünschte Datumsformat explizit für die Unmarshal-Funktion anzugeben. Es gibt jedoch eine Problemumgehung, bei der eine benutzerdefinierte Struktur definiert wird, um das Datumsfeld im gewünschten Format darzustellen.

So kann dies erreicht werden:

  1. Erstellen Sie eine anonyme benutzerdefinierte Zeitstruktur, die eingebettet wird den time.Time-Typ.
  2. Implementieren Sie die erforderliche UnmarshalXML-Methode innerhalb der customTime-Struktur, um den Unmarshaling-Prozess abzuwickeln.
  3. Passen Sie die Datumsanalyselogik in UnmarshalXML an, um das von „yyyymmdd“ verwendete Datumsformat zu berücksichtigen die API.
  4. Verwenden Sie die Struktur „customTime“, um das ursprüngliche Feld „time.Time“ in Ihrer Transaktionsstruktur zu ersetzen.

Hier ist ein Beispielcode, der diesen Ansatz demonstriert:

type Transaction struct {
    // ... other fields
    DateEntered customTime `xml:"enterdate"` // Use customTime to handle specific date format
}

type customTime struct {
    time.Time
}

func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    const shortForm = "20060102" // Custom date format: "yyyymmdd"
    var v string
    d.DecodeElement(&v, &start)
    parse, err := time.Parse(shortForm, v)
    if err != nil {
        return err
    }
    *c = customTime{parse}
    return nil
}
Nach dem Login kopieren

Durch die Verwendung dieses Ansatzes können Sie die Einschränkung der Angabe eines Datumsformats während des Unmarshaling-Prozesses überwinden und nahtlos mit Datumsangaben umgehen, die nicht dem Standardformat entsprechen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Felder vom Typ time.Time mit benutzerdefinierten Datumsformaten in Golang?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!