From cd2fd7179740e34246281e80aee9f7df2d5aa57f Mon Sep 17 00:00:00 2001 From: iahsanGill Date: Thu, 13 Aug 2026 01:36:17 +0500 Subject: [PATCH] fix: support integer keys when marshaling JSON --- api/krusty/duplicatekeys_test.go | 2 +- kyaml/yaml/rnode.go | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/api/krusty/duplicatekeys_test.go b/api/krusty/duplicatekeys_test.go index c87cd6c34..a8ba67238 100644 --- a/api/krusty/duplicatekeys_test.go +++ b/api/krusty/duplicatekeys_test.go @@ -43,5 +43,5 @@ spec: m := th.Run(".", th.MakeDefaultOptions()) _, err := m.AsYaml() require.Error(t, err) - assert.Contains(t, err.Error(), "mapping key \"env\" already defined") + assert.Contains(t, err.Error(), "key \"env\" already set in map") } diff --git a/kyaml/yaml/rnode.go b/kyaml/yaml/rnode.go index bb929059f..c766565b1 100644 --- a/kyaml/yaml/rnode.go +++ b/kyaml/yaml/rnode.go @@ -17,6 +17,7 @@ import ( "sigs.k8s.io/kustomize/kyaml/sliceutil" "sigs.k8s.io/kustomize/kyaml/utils" "sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels" + k8syaml "sigs.k8s.io/yaml" ) // MakeNullNode returns an RNode that represents an empty document. @@ -983,20 +984,11 @@ func (rn *RNode) MarshalJSON() ([]byte, error) { return nil, err } - if yNode.Kind == SequenceNode { - var a []interface{} - if err := Unmarshal([]byte(s), &a); err != nil { - return nil, err - } - return json.Marshal(a) + b, err := k8syaml.YAMLToJSONStrict([]byte(s)) + if err != nil { + return nil, errors.Wrap(err) } - - m := map[string]interface{}{} - if err := Unmarshal([]byte(s), &m); err != nil { - return nil, err - } - - return json.Marshal(m) + return b, nil } // UnmarshalJSON overwrites this RNode with data from []byte.