Golang で time.Time 型の XML フィールドをアンマーシャルする
Golang で REST API を使用して XML データ取得を操作する場合、デフォルトの time.Time 解析形式に準拠していない日付フィールドが発生することはまれです。この不一致により、取得した日付を GO 構造体の time.Time フィールドに割り当てようとすると、アンマーシャリングが失敗する可能性があります。
残念ながら、アンマーシャル関数に目的の日付形式を明示的に指定する簡単な方法はありません。ただし、目的の形式で日付フィールドを表すカスタム構造体を定義するという回避策が存在します。
これを実現する方法は次のとおりです。
このアプローチを示すコード例は次のとおりです。
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 }
このアプローチを採用すると、アンマーシャリング プロセス中に日付形式を指定するという制限を克服し、デフォルトの形式に準拠しない日付をシームレスに処理できます。
以上がGolang でカスタム日付形式を使用して time.Time 型の XML フィールドをアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。