Merge pull request #119229 from HirazawaUi/fix-convert-slice

Fix the converts an empty string to nil.
This commit is contained in:
Kubernetes Prow Robot 2023-07-11 23:39:11 -07:00 committed by GitHub
commit 95e915c428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -231,7 +231,7 @@ func (c *fromUnstructuredContext) pushKey(key string) {
} }
// FromUnstructuredWIthValidation converts an object from map[string]interface{} representation into a concrete type. // FromUnstructuredWithValidation converts an object from map[string]interface{} representation into a concrete type.
// It uses encoding/json/Unmarshaler if object implements it or reflection if not. // It uses encoding/json/Unmarshaler if object implements it or reflection if not.
// It takes a validationDirective that indicates how to behave when it encounters unknown fields. // It takes a validationDirective that indicates how to behave when it encounters unknown fields.
func (c *unstructuredConverter) FromUnstructuredWithValidation(u map[string]interface{}, obj interface{}, returnUnknownFields bool) error { func (c *unstructuredConverter) FromUnstructuredWithValidation(u map[string]interface{}, obj interface{}, returnUnknownFields bool) error {
@ -465,7 +465,7 @@ func sliceFromUnstructured(sv, dv reflect.Value, ctx *fromUnstructuredContext) e
} }
dv.SetBytes(data) dv.SetBytes(data)
} else { } else {
dv.Set(reflect.Zero(dt)) dv.Set(reflect.MakeSlice(dt, 0, 0))
} }
return nil return nil
} }

View File

@ -91,6 +91,7 @@ type F struct {
G []int `json:"fg"` G []int `json:"fg"`
H []bool `json:"fh"` H []bool `json:"fh"`
I []float32 `json:"fi"` I []float32 `json:"fi"`
J []byte `json:"fj"`
} }
type G struct { type G struct {
@ -751,6 +752,10 @@ func TestUnrecognized(t *testing.T) {
data: "{\"ff\":[\"abc\"],\"fg\":[123],\"fh\":[true,false]}", data: "{\"ff\":[\"abc\"],\"fg\":[123],\"fh\":[true,false]}",
obj: &F{}, obj: &F{},
}, },
{
data: "{\"fj\":\"\"}",
obj: &F{},
},
{ {
// Invalid string data // Invalid string data
data: "{\"fa\":123}", data: "{\"fa\":123}",