Merge pull request #2432 from tamalsaha/fix-marshal

Fix MarshalJSON of array
This commit is contained in:
Kubernetes Prow Robot
2020-05-13 16:22:22 -07:00
committed by GitHub
2 changed files with 43 additions and 13 deletions

View File

@@ -688,11 +688,18 @@ func (rn *RNode) MarshalJSON() ([]byte, error) {
return nil, err return nil, err
} }
if rn.YNode().Kind == SequenceNode {
var a []interface{}
if err := Unmarshal([]byte(s), &a); err != nil {
return nil, err
}
return json.Marshal(a)
}
m := map[string]interface{}{} m := map[string]interface{}{}
if err := Unmarshal([]byte(s), &m); err != nil { if err := Unmarshal([]byte(s), &m); err != nil {
return nil, err return nil, err
} }
return json.Marshal(m) return json.Marshal(m)
} }

View File

@@ -105,21 +105,44 @@ metadata:
} }
func TestRNode_MarshalJSON(t *testing.T) { func TestRNode_MarshalJSON(t *testing.T) {
instance, err := Parse(` tests := []struct {
name string
ydoc string
want string
}{
{
name: "object",
ydoc: `
hello: world hello: world
`) `,
if !assert.NoError(t, err) { want: `{"hello":"world"}`,
t.FailNow() },
{
name: "array",
ydoc: `
- name: s1
- name: s2
`,
want: `[{"name":"s1"},{"name":"s2"}]`,
},
} }
for idx := range tests {
tt := tests[idx]
t.Run(tt.name, func(t *testing.T) {
instance, err := Parse(tt.ydoc)
if !assert.NoError(t, err) {
t.FailNow()
}
actual, err := instance.MarshalJSON() actual, err := instance.MarshalJSON()
if !assert.NoError(t, err) { if !assert.NoError(t, err) {
t.FailNow() t.FailNow()
} }
expected := `{"hello":"world"}` if !assert.Equal(t,
if !assert.Equal(t, strings.TrimSpace(tt.want), strings.TrimSpace(string(actual))) {
strings.TrimSpace(expected), strings.TrimSpace(string(actual))) { t.FailNow()
t.FailNow() }
})
} }
} }