mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-09 04:52:35 +02:00
update serialization
This commit is contained in:
parent
6e9b5cc113
commit
497879fb4b
2 changed files with 19 additions and 5 deletions
|
@ -33,11 +33,8 @@ var (
|
|||
ErrMapMissingColon = E.New("map missing colon")
|
||||
ErrMapTooManyColons = E.New("map too many colons")
|
||||
ErrUnknownField = E.New("unknown field")
|
||||
ErrValidationError = E.New("validation error")
|
||||
)
|
||||
|
||||
var validate = validator.New()
|
||||
|
||||
func ValidateYaml(schema *jsonschema.Schema, data []byte) E.Error {
|
||||
var i any
|
||||
|
||||
|
@ -185,6 +182,7 @@ func Deserialize(src SerializedObject, dst any) E.Error {
|
|||
case reflect.Struct:
|
||||
needValidate := false
|
||||
mapping := make(map[string]reflect.Value)
|
||||
fieldName := make(map[string]string)
|
||||
for _, field := range reflect.VisibleFields(dstT) {
|
||||
var key string
|
||||
if jsonTag, ok := field.Tag.Lookup("json"); ok {
|
||||
|
@ -192,7 +190,9 @@ func Deserialize(src SerializedObject, dst any) E.Error {
|
|||
} else {
|
||||
key = field.Name
|
||||
}
|
||||
mapping[strutils.ToLowerNoSnake(key)] = dstV.FieldByName(field.Name)
|
||||
key = strutils.ToLowerNoSnake(key)
|
||||
mapping[key] = dstV.FieldByName(field.Name)
|
||||
fieldName[field.Name] = key
|
||||
_, ok := field.Tag.Lookup("validate")
|
||||
if ok {
|
||||
needValidate = true
|
||||
|
@ -218,7 +218,7 @@ func Deserialize(src SerializedObject, dst any) E.Error {
|
|||
detail += ":" + e.Param()
|
||||
}
|
||||
errs.Add(ErrValidationError.
|
||||
Subject(strutils.ToLowerNoSnake(e.Field())).
|
||||
Subject(fieldName[e.Field()]).
|
||||
Withf("require %q", detail))
|
||||
}
|
||||
}
|
||||
|
|
14
internal/utils/validation.go
Normal file
14
internal/utils/validation.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package utils
|
||||
|
||||
import (
|
||||
"github.com/go-playground/validator/v10"
|
||||
E "github.com/yusing/go-proxy/internal/error"
|
||||
)
|
||||
|
||||
var validate = validator.New()
|
||||
|
||||
var ErrValidationError = E.New("validation error")
|
||||
|
||||
func Validator() *validator.Validate {
|
||||
return validate
|
||||
}
|
Loading…
Add table
Reference in a new issue