Я играю с Go недавно, и это потрясающе. То, что я не могу понять (после просмотра документации и сообщений в блогах), заключается в том, как получить тип time.Time
для форматирования в любом формате, который мне нужен, когда он будет закодирован json.NewEncoder.Encode
Здесь минимальный пример кода:
package main
type Document struct {
Name string
Content string
Stamp time.Time
Author string
}
func sendResponse(data interface{}, w http.ResponseWriter, r * http.Request){
_, err := json.Marshal(data)
j := json.NewEncoder(w)
if err == nil {
encodedErr := j.Encode(data)
if encodedErr != nil{
//code snipped
}
}else{
//code snipped
}
}
func main() {
http.HandleFunc("/document", control.HandleDocuments)
http.ListenAndServe("localhost:4000", nil)
}
func HandleDocuments(w http.ResponseWriter,r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "*")
switch r.Method {
case "GET":
//logic snipped
testDoc := model.Document{"Meeting Notes", "These are some notes", time.Now(), "Bacon"}
sendResponse(testDoc, w,r)
}
case "POST":
case "PUT":
case "DELETE":
default:
//snipped
}
}
В идеале я бы хотел отправить запрос и вернуть поле Stamp как-то вроде May 15, 2014
, а не 2014-05-16T08:28:06.801064-04:00
Но я не совсем уверен, как, я знаю, что я могу добавить json:stamp
в объявление типа документа, чтобы получить поле для кодирования с печатью имени вместо Stamp, но я не знаю, что эти типы вещи вызываются, поэтому я даже не уверен, что делать в Google, чтобы узнать, есть ли в нем какой-то вариант форматирования.
Есть ли у кого-нибудь ссылка на пример или на хорошую страницу документации по теме разметки типа (или что бы они ни называли) или на то, как я могу сказать, что кодер JSON обрабатывает поля time.Time
?
Просто для справки, я просмотрел эти страницы: здесь и здесь и, конечно, в официальных документах