Skip to content

Commit

Permalink
fix: Propagate node name for nested arrays
Browse files Browse the repository at this point in the history
  • Loading branch information
srebhan committed Mar 11, 2024
1 parent 5e32846 commit 5dc7803
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
2 changes: 1 addition & 1 deletion node.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ func parseValue(x interface{}, top *Node, level int) {
case []interface{}:
// JSON array
for _, vv := range v {
n := &Node{Type: ElementNode, level: level, value: vv}
n := &Node{Data: top.Data, Type: ElementNode, level: level, value: vv}
addNode(n)
parseValue(vv, n, level+1)
}
Expand Down
22 changes: 22 additions & 0 deletions node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,25 @@ func TestLargeFloat(t *testing.T) {
t.Fatalf("expected %v but %v", "365823929453", n.InnerText())
}
}

func TestNestedArray(t *testing.T) {
s := `{
"values": [
[
1,
2,
3
]
]
}`
doc, err := parseString(s)
if err != nil {
t.Fatal(err)
}

expected := `<?xml version="1.0" encoding="utf-8"?><root><values><values>1</values><values>2</values><values>3</values></values></root>`
xml := doc.OutputXML()
if xml != expected {
t.Fatalf("expected %q but got %q", expected, xml)
}
}

0 comments on commit 5dc7803

Please sign in to comment.