diff --git a/pkg/data/data.go b/pkg/data/data.go index 0540055ad4e213f666b0cf72019b9b4b9c39fbe8..c1d0f63f958209147137cfee6829e531a2f5a87d 100644 --- a/pkg/data/data.go +++ b/pkg/data/data.go @@ -177,6 +177,10 @@ func set(path []string, data, value any) error { switch v := data.(type) { case map[string]interface{}: + if v == nil { + return nil + } + if len(path) == 1 { if _, ok := value.(DeleteValueType); ok { diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go index 785eefbb868a68c9d8c6b2f75b8f861ab2041e11..ecfacbbfa86139509225e3383d2aa80c15e0ddb3 100644 --- a/pkg/data/data_test.go +++ b/pkg/data/data_test.go @@ -8,6 +8,8 @@ import ( ) func TestDelete(t *testing.T) { + var uninitializedMap map[string]any + tests := []struct { name string in interface{} @@ -62,6 +64,12 @@ func TestDelete(t *testing.T) { }, }, "z": "2"}, }, + { + "object field from uninitialized map", + uninitializedMap, + "a.b", + uninitializedMap, + }, // Решили что автоматически удалять пустые объекты/слайсы не нужно //{ // "empty object",