I tried to use golang validator package
https://pkg.go.dev/github.com/go-playground/validator/v10
is there a way to mask the field for the returned error? example below, let's say I have a struct like the following, to perform struct validation
type SignInUserData struct {
Email string `json:"email" validate:"required"`
Password string `json:"password" validate:"required"`
}
if my error is mapping like this:
validationErrors := err.(validator.ValidationErrors)
for _, fieldError := range validationErrors {
fmt.println(fieldError.Field())
}
I get the field name, like "Email" or "Password". I want what is returned is the other name of the field, for example "Email" becomes "Email Address", or "Password" becomes "Secret".
Is there a way to do it? Thank You ..
You can use (*Validate).RegisterTagNameFunc to register a function to get alternate names for StructFields.
For example, register a function to get the alternative name from the name
tag:
package main
import (
"fmt"
"reflect"
"github.com/go-playground/validator/v10"
)
type SignInUserData struct {
Email string `json:"email" validate:"required" name:"Email Address"`
Password string `json:"password" validate:"required" name:"Secret"`
}
func main() {
validate := validator.New()
validate.RegisterTagNameFunc(func(field reflect.StructField) string {
return field.Tag.Get("name")
})
data := &SignInUserData{}
err := validate.Struct(data)
if err != nil {
validationErrors, ok := err.(validator.ValidationErrors)
if ok {
for _, fieldError := range validationErrors {
fmt.Println(fieldError.Field())
}
}
}
}