fix: support integer keys when marshaling JSON

This commit is contained in:
iahsanGill
2026-08-13 01:36:17 +05:00
parent 1df43a9735
commit cd2fd71797
2 changed files with 6 additions and 14 deletions

View File

@@ -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")
}

View File

@@ -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
b, err := k8syaml.YAMLToJSONStrict([]byte(s))
if err != nil {
return nil, errors.Wrap(err)
}
return json.Marshal(a)
}
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.