第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自定義 time.Time 類型返回數據存儲

自定義 time.Time 類型返回數據存儲

Go
慕森卡 2022-01-04 10:52:07
我一直在處理來自 JSON POST 到我們的 Go API 的自定義時間格式的各種示例。我有一個 UnmarshalJSON 的覆蓋函數,看起來一切正常。但是,當我將結構保存到數據存儲中時,它不會被識別為 time.Time 值,因此不會被設置/保存。'toString' 函數打印出我希望在數據存儲中看到的正確時間,但無法弄清楚如何轉換它或將其轉換為 time.Time 數據存儲保存。這是我們正在構建的一個簡單的日志記錄 API 功能。請參閱下面的代碼。我想就像將任意字符串轉換為 time.Time 的 UnmarshalJSON 一樣,然后轉換為“Timestamp”(在這種情況下)是否有一個 Datastore 等價物在保存之前將其放回 time.Time?感謝您的任何幫助/指導。我確實有這樣一個 'DateString' 是一個字符串值,當解組 'AppLog' 時通過 JSON 設置,然后我將它轉換為 'Date' time.Time,但想要更“slick”并使用如果可能,UnmarshalJSON。package loggerimport (    "encoding/json"    "errors"    "fmt"    "io"    "io/ioutil"    "log"    "net/http"    "time"    "golang.org/x/net/context"    "google.golang.org/appengine"    "google.golang.org/appengine/datastore"    "github.com/gorilla/mux")func init() {    router := mux.NewRouter()    router.HandleFunc("/applogger", DoLog).Methods("POST")    http.Handle("/applogger/", router)}// DoLog --func DoLog(rw http.ResponseWriter, request *http.Request) {    var applog AppLog    body, err := ioutil.ReadAll(io.LimitReader(request.Body, 1048576))    if err != nil {        panic(err)    }    if err := request.Body.Close(); err != nil {        panic(err)    }    if err := json.Unmarshal(body, &applog); err != nil {        panic(err)    }    applog.IP = request.RemoteAddr    log.Print("my timestamp", applog.Date)    ctx := appengine.NewContext(request)    applog.Save(ctx)    fmt.Fprint(rw, "applogger - success")}// AppLog structtype AppLog struct {    Application string    `json:"application" datastore:"application"`    Platform    string    `json:"platform" datastore:"platform,noindex"`    Date        Timestamp `json:"date" datastore:"date"`    Data        string    `json:"data" datastore:"data,noindex"`    IP          string    `json:"-" datastore:"ip,noindex"`}// Save --func (al *AppLog) Save(ctx context.Context) *datastore.Key {    key := datastore.NewKey(ctx, "AppLog", "", 0, nil)    if _, err := datastore.Put(ctx, key, al); err != nil {        return nil    }    return key}
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

如果有很多結構,而您只是實現(xiàn)自定義編組和解組功能,那么要做的工作很多。您可以使用另一個庫來代替,例如 json-iterator 擴展jsontime:


import "github.com/liamylian/jsontime"


var json = jsontime.ConfigWithCustomTimeFormat


type Book struct {

    Id        int           `json:"id"`

    UpdatedAt *time.Time    `json:"updated_at" time_format:"sql_date" time_utc:"true"`

    CreatedAt time.Time     `json:"created_at" time_format:"sql_datetime" time_location:"UTC"`

}


查看完整回答
反對 回復 2022-01-04
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

time.Time 已經有一個UnmarshalJSON 方法。它將從 RFC3339 格式的 JSON 字符串解組為 time.Time。

如果之后您需要其他字符串格式,則可以使用

(t *time.Time).Format(layout string)

使用任何所需的格式。


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號