使用自定义类型格式化传出 JSON 中的时间戳
要在 JSON 编码期间格式化时间戳,您可以创建一个实现 Marshaler 接口的自定义类型。通过这样做,您可以控制序列化过程,从而指定所需的格式。
实现 Marshaler 接口
Marshaler 接口需要一个方法, MarshalJSON,它返回表示 JSON 编码数据的字节切片以及错误(如果有)。在本例中,您将定义一个包装 time.Time 并实现 MarshalJSON 的自定义类型。
这是一个示例实现:
type JSONTime time.Time func (t JSONTime)MarshalJSON() ([]byte, error) { // Format the timestamp in the desired format stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2")) return []byte(stamp), nil }
更新文档结构
在您的文档结构中,将 time.Time 替换为 Stamp 的自定义 JSONTime 类型field:
type Document struct { Name string Content string Stamp JSONTime Author string }
初始化 Document
初始化 Document 实例时,使用 JSONTime(time.Now()) 而不是 time.Now():
testDoc := model.Document{"Meeting Notes", "These are some notes", JSONTime(time.Now()), "Bacon"}
通过执行以下步骤,您可以根据您的要求格式化 JSON 响应中的时间戳。您可以根据需要将此概念扩展到其他自定义类型或场景。
以上是如何在 Go 的 JSON 输出中自定义时间戳格式?的详细内容。更多信息请关注PHP中文网其他相关文章!