Go 中 Time.Time 字段的自定义 XML 解析
将 XML 数据解组到 Go 结构体时,您可能会遇到这样的情况:日期字段格式与默认 time.Time 格式不同,导致解组错误。此问题深入研究了在解组过程中可用于指定自定义日期格式的选项。
问题源于 time.Time 未实现 xml.Unmarshaler 接口,从而阻止您指定自定义日期格式。作为解决方案,您可以创建一个带有匿名 time.Time 字段的包装结构,并使用所需的日期格式实现您自己的 UnmarshalXML 方法。
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` // use your own type that satisfies UnmarshalXML //... } type customTime struct { time.Time } func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { const shortForm = "20060102" // yyyymmdd date format var v string d.DecodeElement(&v, &start) parse, err := time.Parse(shortForm, v) if err != nil { return err } *c = customTime{parse} return nil }
此方法允许您使用自定义日期格式解组 XML 文档同时保持类型安全。如果日期存储为属性,则可以通过实现 UnmarshalXMLAttr 来使用类似的方法。示例实现位于 http://play.golang.org/p/EFXZNsjE4a。
以上是如何解析 Go XML 中的自定义 Time.Time 字段?的详细内容。更多信息请关注PHP中文网其他相关文章!