@ -289,6 +289,10 @@ func (u *Unmarshaler) generateMap(keyType, elemType reflect.Type, mapValue any)
return reflect.ValueOf(mapValue), nil
}
if keyType != valueType.Key() {
return emptyValue, errTypeMismatch
refValue := reflect.ValueOf(mapValue)
targetValue := reflect.MakeMapWithSize(mapType, refValue.Len())
dereffedElemType := Deref(elemType)
@ -4437,3 +4437,18 @@ func TestFillDefaultUnmarshal(t *testing.T) {
assert.Error(t, err)
})
func Test_UnmarshalMap(t *testing.T) {
type Customer struct {
Names map[int]string `key:"names"`
input := map[string]any{
"names": map[string]any{
"19": "Tom",
},
var customer Customer
assert.ErrorIs(t, UnmarshalKey(input, &customer), errTypeMismatch)