给定
type NullTime struct {
Time time.Time
Valid bool // Valid is true if Time is not NULL
}
字符串
和
type PayinCount struct {
DateShiftStart sql.NullTime `json:"dateShiftStart"`
DateShiftEnd sql.NullTime `json:"dateShiftend"`
}
型
当我处理下面的JSON时,
{
"dateShiftStart":"2023-10-16",
"dateShiftEnd":"2023-10-23"
}
型
与
var payinsCount PayinsCount
err = json.Unmarshal(body, &payinsCount)
if err != nil {
sendErrorResponse(w, err.Error(), http.StatusBadRequest)
return
}
型
其中sendErrorResponse是以下帮助进程
func sendErrorResponse(w http.ResponseWriter, err string, statusCode int) {
messageStatusCode := MessageStatusCode{
Message: err,
StatusCode: statusCode}
w.WriteHeader(statusCode)
json.NewEncoder(w).Encode(messageStatusCode)
}
型
我收到以下信息
{
"message": "json: cannot unmarshal string into Go struct field PayinsCount.dateShiftStart of type sql.NullTime",
"statusCode": 400
}
型
如何解决此问题?
1条答案
按热度按时间jhdbpxl91#
最后我使用了下面的代码。我添加了下面的类型。
字符串
然后我将PayinsCount更改为使用NullDate
型
然后我创造了
型
当我处理下面的JSON时,
型
与
型
它工作了。我最终得到了一个有效的PayinsCount示例。
为了完整起见,这里是NullDate的MarshalJSON函数
型
注意转义的双引号--如果没有它们,encoding/json编组代码将在3个块中处理日期字符串,我得到以下错误
型