пользователя
func handleWriteBlock(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var m Message
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&m); err != nil {
log.Fatalln(err.Error())
respondWithJSON(w, r, http.StatusBadRequest, r.Body)
return
}
validate := validator.New()
validate_err := validate.Struct(m)
if validate_err != nil {
errs := ValidateErrors{}
for _, err := range validate_err.(validator.ValidationErrors) {
errs.Errors = append(errs.Errors, ValidateError{err.Field(), err.Value(), err.ActualTag()})
}
respondWithJSON(w, r, http.StatusBadRequest, errs)
return
}
Если пользователь передаёт данные неверного типа, то срабатывает условие if err := decoder.Decode(&m); err != nil. Как можно обработать эту ошибку, чтобы ответный json прислать какое поле неправильное и что именно с ним не так? Пока что просто вывожу в консоль err.Error(), выводит json: cannot unmarshal string into Go struct field Wash.wash.startTime of type int
encoding/json возвращает структуру, где есть название поля и позиция
Обсуждают сегодня