diff --git a/gui/gui.go b/gui/gui.go index 01757c7..a7c0113 100644 --- a/gui/gui.go +++ b/gui/gui.go @@ -239,6 +239,8 @@ func (g *Gui) parseValue(node *tview.TreeNode) interface{} { case Boolean: b, _ := strconv.ParseBool(v) return b + case Null: + return nil } return v diff --git a/gui/tree.go b/gui/tree.go index bd3f2e6..259f95c 100644 --- a/gui/tree.go +++ b/gui/tree.go @@ -95,9 +95,14 @@ func (t *Tree) AddNode(node interface{}) []*tview.TreeNode { case reflect.Bool: valueType = Boolean default: - valueType = String + if node == nil { + valueType = Null + } else { + valueType = String + } } + log.Printf("value_type:%v", valueType) nodes = append(nodes, t.NewNodeWithLiteral(node). SetReference(Reference{JSONType: Value, ValueType: valueType})) } @@ -105,6 +110,9 @@ func (t *Tree) AddNode(node interface{}) []*tview.TreeNode { } func (t *Tree) NewNodeWithLiteral(i interface{}) *tview.TreeNode { + if i == nil { + return tview.NewTreeNode("null") + } return tview.NewTreeNode(fmt.Sprintf("%v", i)) } diff --git a/gui/type.go b/gui/type.go index 387049c..3e02de7 100644 --- a/gui/type.go +++ b/gui/type.go @@ -28,6 +28,7 @@ const ( String Float Boolean + Null ) var valueTypeMap = map[ValueType]string{ @@ -35,6 +36,7 @@ var valueTypeMap = map[ValueType]string{ String: "string", Float: "float", Boolean: "boolean", + Null: "null", } func (v ValueType) String() string {