Home >Backend Development >Golang >How Can I Customize Timestamp Formatting in Go's JSON Responses?
Formatting Timestamps in JSON Responses
Go's time package provides a time.Time type for representing timestamps. However, when encoding a time.Time object to JSON using json.NewEncoder, it is formatted in a machine-friendly format. If you wish to customize the timestamp format in JSON responses, employ the following steps:
Customizing Timestamp Format
Create a custom type that embeds time.Time and implements the Marshaler interface.
type JSONTime time.Time func (t JSONTime) MarshalJSON() ([]byte, error) { stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2")) return []byte(stamp), nil }
This code defines a type that formats the timestamp as "Mon Jan _2".
Using Custom Time Type
In your Document struct, use the JSONTime type for the timestamp field:
type Document struct { Name string Content string Stamp JSONTime Author string }
Sample Code
Initialize the Document with your custom timestamp:
testDoc := model.Document{"Meeting Notes", "These are some notes", JSONTime(time.Now()), "Bacon"}
Now, you can send the response with the custom timestamp format:
sendResponse(testDoc, w,r)
Note:
Alternatively, you can use a library like timelib to easily customize timestamp formats. It provides a MarshalJSON method for time.Time values.
The above is the detailed content of How Can I Customize Timestamp Formatting in Go's JSON Responses?. For more information, please follow other related articles on the PHP Chinese website!