From d7a246c4c79a1f11d95dba67b785dfdbac9ae5ea Mon Sep 17 00:00:00 2001 From: John Guo Date: Sun, 2 Mar 2025 22:46:27 +0800 Subject: [PATCH] up --- util/gconv/gconv_converter.go | 3 --- util/gconv/gconv_converter_convert.go | 4 ++-- util/gconv/gconv_converter_maptomaps.go | 4 ++-- util/gconv/gconv_converter_slice_any.go | 1 + util/gconv/gconv_converter_slice_map.go | 8 ++++---- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/util/gconv/gconv_converter.go b/util/gconv/gconv_converter.go index 68fe71a14..86157c9c0 100644 --- a/util/gconv/gconv_converter.go +++ b/util/gconv/gconv_converter.go @@ -33,9 +33,6 @@ type Converter interface { Float32(any any) (float32, error) Float64(any any) (float64, error) - doMapConvert( - value any, recursive recursiveType, mustMapReturn bool, option ...MapOption, - ) map[string]any MapToMap(params any, pointer any, mapping ...map[string]string) (err error) MapToMaps(params any, pointer any, paramKeyToAttrMap ...map[string]string) (err error) Rune(any any) (rune, error) diff --git a/util/gconv/gconv_converter_convert.go b/util/gconv/gconv_converter_convert.go index 74ca4660f..f6d30ec84 100644 --- a/util/gconv/gconv_converter_convert.go +++ b/util/gconv/gconv_converter_convert.go @@ -310,10 +310,10 @@ func (c *impConverter) doConvert(in doConvertInput) (convertedValue any, err err return &v, nil case "map[string]string": - return MapStrStr(in.FromValue), nil + return c.MapStrStr(in.FromValue, MapOption{}) case "map[string]interface {}": - return Map(in.FromValue, MapOption{}), nil + return c.Map(in.FromValue, MapOption{}) case "[]map[string]interface {}": return c.SliceMap(in.FromValue, SliceOption{}, MapOption{}) diff --git a/util/gconv/gconv_converter_maptomaps.go b/util/gconv/gconv_converter_maptomaps.go index 9783a4e6f..1c5c266a7 100644 --- a/util/gconv/gconv_converter_maptomaps.go +++ b/util/gconv/gconv_converter_maptomaps.go @@ -103,13 +103,13 @@ func (c *impConverter) MapToMaps(params any, pointer any, paramKeyToAttrMap ...m var item reflect.Value if pointerElemType.Kind() == reflect.Ptr { item = reflect.New(pointerElemType.Elem()) - if err = MapToMap(paramsRv.Index(i).Interface(), item, paramKeyToAttrMap...); err != nil { + if err = c.MapToMap(paramsRv.Index(i).Interface(), item, paramKeyToAttrMap...); err != nil { return err } pointerSlice.Index(i).Set(item) } else { item = reflect.New(pointerElemType) - if err = MapToMap(paramsRv.Index(i).Interface(), item, paramKeyToAttrMap...); err != nil { + if err = c.MapToMap(paramsRv.Index(i).Interface(), item, paramKeyToAttrMap...); err != nil { return err } pointerSlice.Index(i).Set(item.Elem()) diff --git a/util/gconv/gconv_converter_slice_any.go b/util/gconv/gconv_converter_slice_any.go index 45ede7cff..936805340 100644 --- a/util/gconv/gconv_converter_slice_any.go +++ b/util/gconv/gconv_converter_slice_any.go @@ -15,6 +15,7 @@ import ( "github.com/gogf/gf/v2/util/gconv/internal/localinterface" ) +// SliceOption is the option for Slice type converting. type SliceOption struct { // BreakOnError specifies whether to break converting the next element // if one element conversion fails in slice. diff --git a/util/gconv/gconv_converter_slice_map.go b/util/gconv/gconv_converter_slice_map.go index 813833196..0bd5ecdfd 100644 --- a/util/gconv/gconv_converter_slice_map.go +++ b/util/gconv/gconv_converter_slice_map.go @@ -48,10 +48,10 @@ func (c *impConverter) SliceMap(value any, sliceOption SliceOption, mapOption Ma } list := make([]map[string]any, len(array)) for k, v := range array { - m := Map(v, mapOption) - //if err != nil { - // return nil, err - //} + m, err := c.Map(v, mapOption) + if err != nil && sliceOption.BreakOnError { + return nil, err + } list[k] = m } return list, nil