diff --git a/define/rule.go b/define/rule.go index 443987d..931e84f 100644 --- a/define/rule.go +++ b/define/rule.go @@ -16,7 +16,7 @@ type FieldRule struct { Path string `json:"path"` // 字段路径 Type string `json:"type"` // 数据类型, 具体枚举值参见 git.zhangdeman.cn/zhangdeman/consts DisableRewrite bool `json:"disable_rewrite"` // 验证完相关数据类型之后, 不要重新给字段赋值 - DefaultValue string `json:"default_value"` // 默认值, 统一以字符串传入, 会转为最终设置的类型 + DefaultValue any `json:"default_value"` // 默认值, 统一以字符串传入, 会转为最终设置的类型 IsRequired bool `json:"is_required"` // 是否必传 AllowEmpty bool `json:"allow_empty"` // 必传时空字符串是否合法 AllowZero bool `json:"allow_zero"` // 必传数字, 0 是否合法 diff --git a/run.go b/run.go index a94ea48..6f58b73 100644 --- a/run.go +++ b/run.go @@ -50,6 +50,9 @@ func RunForStruct(sourceData any, ruleList []*define.FieldRule) (map[string]any, // // Date : 14:13 2024/4/29 func Run(sourceData map[string]any, ruleList []*define.FieldRule) error { + for _, itemRule := range ruleList { + itemRule.DefaultValue = nil + } byteData, err := RunWithResult(sourceData, ruleList) if nil != err { return err @@ -169,7 +172,14 @@ func formatInputVal(val gjson.Result, rule *define.FieldRule) (any, error) { if rule.DisableAutoConvert { inputVal = rule.DefaultValue } else { - inputVal = strings.TrimSpace(rule.DefaultValue) + if nil == rule.DefaultValue { + return nil, nil + } + if strVal, ok := rule.DefaultValue.(string); ok { + inputVal = strings.TrimSpace(strVal) + } else { + inputVal = rule.DefaultValue + } } } else { if inputValStr, ok := inputVal.(string); ok {