使用 Time.Time 格式化传出 JSON 中的时间戳
在 Go 中,当发送 time.Time 类型作为 JSON 响应的一部分时,通常需要将时间戳格式化为所需的格式,而不是默认的 ISO 8601 格式。为此,您可以采用以下技术:
自定义编组和解组
Marshall 接口可以通过自定义类型来实现,以确定其 JSON 表示形式。同样,Unmarshaler 接口可用于控制将 JSON 数据解析为自定义类型。对于 time.Time,我们将定义一个实现 MarshalJSON 的 JSONTime 类型:
type JSONTime time.Time func (t JSONTime) MarshalJSON() ([]byte, error) { // Format the time in the desired format stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2")) return []byte(stamp), nil }
更新文档类型
在文档类型中,更改 Stamp 字段输入 JSONTime:
type Document struct { ... Stamp JSONTime ... }
示例用法
现在,初始化测试文档时:
testDoc := model.Document{ ... Stamp: JSONTime(time.Now()), ... }
编码为 JSON 时,时间戳将按照指定格式进行格式化:
{ ... "Stamp": "May 15, 2014" ... }
这种方法提供了对 JSON 响应中时间戳格式的灵活性和控制,允许根据特定要求进行定制。
以上是如何在 Go 的 JSON 响应中自定义时间戳格式?的详细内容。更多信息请关注PHP中文网其他相关文章!