🥫
【Go】ginのjson形式でのPostリクエストでtime型の項目を受け取れるか
概要
gin/golang gin-gonic does not parse time.Time properly for unix json?のstackoverflowの記事で、GOのフレームワークginで、jsonのPostリクエストにて、日付型の項目は受け取れないような記載がありました。formだと受け取れるようですが、jsonで受け取りたい場合はこちらのissueのコメントにある通り、別途unmarshal用の型を用意するべきと書いてあります。
ただ、記事が少し古いこともあり、2022年3月時点のバージョンv1.7.7
ではどうかというのを、今回メモ書きします。
検証結果
v1.7.7
であれば、jsonをtime型で受け取れました。
以下のように、リクエスト側はISO8601形式で日付が含まれるjson(日付の項目はsample_date
)を投げます。なお、ISO8601形式の詳細については日付と時間の国際規格【ISO8601】を理解するの記事を参照ください。
{
"title":"sampleTitle",
"description":"sampleDetail",
"sample_date":"2022-03-30T14:11:00.000Z"
}
受け取り側のginでは、以下のようにstructを定義しBindすればOKです。
type SamplePostRequest struct {
Title string `json:"title" bson:"title"`
Description string `json:"description" bson:"description"`
SampletDate time.Time `json:"sample_date" bson:"sample_date"`
}
なお、どのバージョンからOKなのは追えませんでしたが、こちらのコメントを見ると、2021年の2月時点以降のバージョンなら修正されているかなと思いました。
Discussion