summaryrefslogtreecommitdiff
path: root/json/node.go
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2018-11-20 00:54:42 +0000
committerFelix Hanley <felix@userspace.com.au>2018-11-20 04:43:29 +0000
commit505c75b306322a22aef900aac636100eab556be9 (patch)
treeca0af0d717a34efe10a890dced90898fc2a153e7 /json/node.go
parentbbf5d9bb88ee4fe955d810e90aa90c302e1dc02d (diff)
downloadquery-505c75b306322a22aef900aac636100eab556be9.tar.gz
query-505c75b306322a22aef900aac636100eab556be9.tar.bz2
Jsonpath WIP
Diffstat (limited to 'json/node.go')
-rw-r--r--json/node.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/json/node.go b/json/node.go
index fd61ed1..67043a1 100644
--- a/json/node.go
+++ b/json/node.go
@@ -43,6 +43,16 @@ func (n Node) String() string {
return fmt.Sprintf("[%s] %s(%s)", NodeNames[n.Type], n.DataType, n.Data)
}
+func (n Node) PrintTree(level int) {
+ for i := 1; i <= level; i++ {
+ fmt.Printf(" ")
+ }
+ fmt.Println(n)
+ for _, c := range n.ChildNodes() {
+ c.PrintTree(level + 1)
+ }
+}
+
// ChildNodes gets all child nodes of the node.
func (n *Node) ChildNodes() []*Node {
var a []*Node
@@ -108,7 +118,7 @@ func parseValue(x interface{}, top *Node, level int) {
switch v := x.(type) {
case []interface{}:
for _, vv := range v {
- n := &Node{Type: ElementNode, level: level, DataType: "array"}
+ n := &Node{Type: ElementNode, level: level, DataType: "arrayitem"}
addNode(n)
parseValue(vv, n, level+1)
}