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.