Go 中的自定义 XML 日期解析与 time.Time 字段
Golang 提供了将 XML 数据解组到自定义结构的灵活性,但它并没有解组 XML 时不支持为 time.Time 字段指定自定义日期格式。当返回的日期格式与默认的 Go 格式不同时,这可能会导致解析错误。
CustomUnmarshaler 解决方案
要克服此限制,您可以使用以下命令创建自定义结构体匿名 time.Time 字段并实现您自己的 UnmarshalXML 方法。此方法将使用您的自定义格式解析日期字符串并相应地设置 time.Time 字段。
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 }
合并自定义结构
将您的 Transaction 结构更新为包含自定义时间字段:
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` //... }
现在,XML 解组将使用 customTime 结构并根据您定义的格式解析日期字符串。
附加注释
如果 XML 元素使用日期属性,则需要以相同的方式实现 UnmarshalXMLAttr。请参阅提供的代码片段中的示例以获取指导。
以上是解组 XML 时如何自定义 Go 中 time.Time 字段的日期解析?的详细内容。更多信息请关注PHP中文网其他相关文章!