diff --git a/go.mod b/go.mod index 03666fe..0a9d982 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.zhangdeman.cn/gateway/validator go 1.22.2 require ( - git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501132050-6c507d6b9c99 // indirect + git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501142503-e31a270e50cc // indirect git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211 // indirect git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20240325080031-1f58204e8687 // indirect git.zhangdeman.cn/zhangdeman/util v0.0.0-20231227095334-7eb5cdbf9253 // indirect diff --git a/go.sum b/go.sum index 5a98c98..04d163d 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240430135109-0be82b4a6434 h1:BgpbeE git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240430135109-0be82b4a6434/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501132050-6c507d6b9c99 h1:rskqw1MOJ7b2qvGZLJ8S9POZFqvcaeaCnBp4FStIiyI= git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501132050-6c507d6b9c99/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501142503-e31a270e50cc h1:kPz9xiUVruM8kwbUUVpxyCTX8pGgyKt60K5zX77oyC4= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240501142503-e31a270e50cc/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k= git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211 h1:I/wOsRpCSRkU9vo1u703slQsmK0wnNeZzsWQOGtIAG0= git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211/go.mod h1:SrtvrQRdzt+8KfYzvosH++gWxo2ShPTzR1m3VQ6uX7U= git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20240325080031-1f58204e8687 h1:uQcGqdzi4UdpZlp4f4FUPeBqoygP58pEKJkmN3ROsE0= diff --git a/run.go b/run.go index 98f6b0d..55ab1e2 100644 --- a/run.go +++ b/run.go @@ -180,6 +180,8 @@ func handleData(inputVal any, rule *define.FieldRule) (any, error) { return handleSliceFloat(inputVal, rule) case consts.DataTypeSliceBool, consts.DataTypeSliceBoolWithChar: // bool数组 return handleSliceBool(inputVal, rule) + case consts.DataTypeSliceSlice: + return handleSliceSlice(inputVal, rule) case consts.DataTypeSliceMapAnyAny: // map 列表 return handleSliceMapAny(inputVal, rule) case consts.DataTypeSliceMapStringAny: @@ -584,7 +586,16 @@ func handleSliceSlice(inputValue interface{}, rule *define.FieldRule) ([][]any, if anySlice, err = handleSlice(inputValue, rule); nil != err { return nil, err } - return nil, nil + sliceSlice := make([][]any, 0) + for _, item := range anySlice { + byteData := serialize.JSON.MarshalForByte(item) + res := make([]any, 0) + if err = serialize.JSON.UnmarshalWithNumber(byteData, &res); nil != err { + return nil, fmt.Errorf("%v : data type is expect [][]any, but convert fail : %v", rule.Path, err.Error()) + } + sliceSlice = append(sliceSlice, res) + } + return sliceSlice, nil } // handleSliceMapAny ...