升级验证库, 支持细化real_map / marshal_map
This commit is contained in:
@@ -8,8 +8,10 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/gateway/validator/define"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"git.zhangdeman.cn/zhangdeman/serialize"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
@@ -25,7 +27,7 @@ func handleMapStringFloat(inputVal any, rule *define.FieldRule) (map[string]floa
|
||||
res map[string]float64
|
||||
)
|
||||
|
||||
if err = strOrMapConvert(inputVal, &res); nil != err {
|
||||
if err = strOrMapConvert(inputVal, rule.MapConfig, &res); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -52,7 +54,7 @@ func handleMapStringAny(inputVal any, rule *define.FieldRule) (map[string]any, e
|
||||
res map[string]any
|
||||
)
|
||||
|
||||
if err = strOrMapConvert(inputVal, &res); nil != err {
|
||||
if err = strOrMapConvert(inputVal, rule.MapConfig, &res); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -79,7 +81,7 @@ func handleMapStringString(inputVal any, rule *define.FieldRule) (map[string]any
|
||||
res map[string]string
|
||||
)
|
||||
|
||||
if err = strOrMapConvert(inputVal, &res); nil != err {
|
||||
if err = strOrMapConvert(inputVal, rule.MapConfig, &res); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -108,7 +110,7 @@ func handleMapStringSlice(inputVal any, rule *define.FieldRule) (map[string][]an
|
||||
res map[string][]any
|
||||
)
|
||||
|
||||
if err = strOrMapConvert(inputVal, &res); nil != err {
|
||||
if err = strOrMapConvert(inputVal, rule.MapConfig, &res); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -163,22 +165,44 @@ func handleMapAnyAny(inputVal any, rule *define.FieldRule) (map[any]any, error)
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 17:26 2024/4/29
|
||||
func strOrMapConvert(inputVal any, receiver any) error {
|
||||
func strOrMapConvert(inputVal any, mapConfig *define.MapConfig, receiver any) error {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
|
||||
if inputValStr, ok := inputVal.(string); ok {
|
||||
if err = serialize.JSON.UnmarshalWithNumber([]byte(inputValStr), receiver); nil != err {
|
||||
return err
|
||||
if nil == mapConfig {
|
||||
if inputValStr, ok := inputVal.(string); ok {
|
||||
if err = serialize.JSON.UnmarshalWithNumber([]byte(inputValStr), receiver); nil != err {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
byteData := serialize.JSON.MarshalForByte(inputVal)
|
||||
if err = serialize.JSON.UnmarshalWithNumber(byteData, receiver); nil != err {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
|
||||
if mapConfig.Mode == consts.DataMapModelMarshal {
|
||||
if inputValStr, ok := inputVal.(string); ok {
|
||||
if err = serialize.JSON.UnmarshalWithNumber([]byte(inputValStr), receiver); nil != err {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return errors.New("input value is not marshal string")
|
||||
}
|
||||
|
||||
if mapConfig.Mode == consts.DataMapModelReal {
|
||||
byteData := serialize.JSON.MarshalForByte(inputVal)
|
||||
if err = serialize.JSON.UnmarshalWithNumber(byteData, receiver); nil != err {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
|
||||
return errors.New(mapConfig.Mode + " : map mode is not support")
|
||||
}
|
||||
|
||||
// validateMap 验证map数据
|
||||
|
||||
Reference in New Issue
Block a user