@@ -2,6 +2,7 @@ package main
22
33import (
44 "encoding/json"
5+ "errors"
56 "fmt"
67 "reflect"
78 "strings"
@@ -114,33 +115,37 @@ func main() {
114115 // this check is only needed when your code could produce
115116 // an invalid value for validation such as interface with nil
116117 // value most including myself do not usually have code like this.
117- if _ , ok := err .(* validator.InvalidValidationError ); ok {
118+ var invalidValidationError * validator.InvalidValidationError
119+ if errors .As (err , & invalidValidationError ) {
118120 fmt .Println (err )
119121 return
120122 }
121123
122- for _ , err := range err .(validator.ValidationErrors ) {
123- e := validationError {
124- Namespace : err .Namespace (),
125- Field : err .Field (),
126- StructNamespace : err .StructNamespace (),
127- StructField : err .StructField (),
128- Tag : err .Tag (),
129- ActualTag : err .ActualTag (),
130- Kind : fmt .Sprintf ("%v" , err .Kind ()),
131- Type : fmt .Sprintf ("%v" , err .Type ()),
132- Value : fmt .Sprintf ("%v" , err .Value ()),
133- Param : err .Param (),
134- Message : err .Error (),
124+ var validateErrs validator.ValidationErrors
125+ if errors .As (err , & validateErrs ) {
126+ for _ , err := range validateErrs {
127+ e := validationError {
128+ Namespace : err .Namespace (),
129+ Field : err .Field (),
130+ StructNamespace : err .StructNamespace (),
131+ StructField : err .StructField (),
132+ Tag : err .Tag (),
133+ ActualTag : err .ActualTag (),
134+ Kind : fmt .Sprintf ("%v" , err .Kind ()),
135+ Type : fmt .Sprintf ("%v" , err .Type ()),
136+ Value : fmt .Sprintf ("%v" , err .Value ()),
137+ Param : err .Param (),
138+ Message : err .Error (),
139+ }
140+
141+ indent , err := json .MarshalIndent (e , "" , " " )
142+ if err != nil {
143+ fmt .Println (err )
144+ panic (err )
145+ }
146+
147+ fmt .Println (string (indent ))
135148 }
136-
137- indent , err := json .MarshalIndent (e , "" , " " )
138- if err != nil {
139- fmt .Println (err )
140- panic (err )
141- }
142-
143- fmt .Println (string (indent ))
144149 }
145150
146151 // from here you can create your own error messages in whatever language you wish
0 commit comments