mirror of
https://gitee.com/johng/gf
synced 2026-07-02 19:31:07 +08:00
fix issue converting empty map[string]string to map[string]interface{}
This commit is contained in:
@ -115,6 +115,10 @@ func doMapConvert(value interface{}, recursive bool, tags ...string) map[string]
|
||||
for k, v := range r {
|
||||
dataMap[k] = v
|
||||
}
|
||||
case map[string]string:
|
||||
for k, v := range r {
|
||||
dataMap[k] = v
|
||||
}
|
||||
case map[string]interface{}:
|
||||
if recursive {
|
||||
// A copy of current map.
|
||||
@ -210,10 +214,8 @@ func doMapConvertForMapOrStructValue(isRoot bool, value interface{}, recursive b
|
||||
tags...,
|
||||
)
|
||||
}
|
||||
if len(dataMap) == 0 {
|
||||
return value
|
||||
}
|
||||
return dataMap
|
||||
|
||||
case reflect.Struct:
|
||||
// Map converting interface check.
|
||||
if v, ok := value.(iMapStrAny); ok {
|
||||
|
||||
@ -105,7 +105,6 @@ func Scan(params interface{}, pointer interface{}, mapping ...map[string]string)
|
||||
return doStructs(params, pointer, keyToAttributeNameMapping, "")
|
||||
|
||||
default:
|
||||
|
||||
return doStruct(params, pointer, keyToAttributeNameMapping, "")
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,14 +7,15 @@
|
||||
package gconv_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/internal/json"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Test_Struct_Basic1(t *testing.T) {
|
||||
@ -1244,3 +1245,16 @@ func Test_Struct_MapAttribute(t *testing.T) {
|
||||
t.AssertNil(err)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Struct_Empty_MapStringString(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
type S struct {
|
||||
Id int
|
||||
}
|
||||
var (
|
||||
s = &S{}
|
||||
err = gconv.Struct(map[string]string{}, s)
|
||||
)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user