@@ -30,6 +30,16 @@ import (
3030 "github.com/olekukonko/tablewriter"
3131)
3232
33+ func jsonify (value interface {}) string {
34+ if reflect .TypeOf (value ).Kind () == reflect .Map || reflect .TypeOf (value ).Kind () == reflect .Slice {
35+ jsonStr , err := json .Marshal (value )
36+ if err == nil {
37+ value = string (jsonStr )
38+ }
39+ }
40+ return fmt .Sprintf ("%v" , value )
41+ }
42+
3343func printJSON (response map [string ]interface {}) {
3444 enc := json .NewEncoder (os .Stdout )
3545 enc .SetEscapeHTML (false )
@@ -46,7 +56,7 @@ func printTable(response map[string]interface{}) {
4656 if ! ok {
4757 continue
4858 }
49- fmt .Printf ("%s :\n " , k )
59+ fmt .Printf ("%v :\n " , k )
5060 var header []string
5161 for _ , item := range items {
5262 row , ok := item .(map [string ]interface {})
@@ -63,12 +73,12 @@ func printTable(response map[string]interface{}) {
6373 }
6474 var rowArray []string
6575 for _ , field := range header {
66- rowArray = append (rowArray , fmt . Sprintf ( "%v" , row [field ]))
76+ rowArray = append (rowArray , jsonify ( row [field ]))
6777 }
6878 table .Append (rowArray )
6979 }
7080 } else {
71- fmt .Printf ("%s = %v\n " , k , v )
81+ fmt .Printf ("%v = %v\n " , k , v )
7282 }
7383 }
7484 table .Render ()
@@ -78,22 +88,22 @@ func printText(response map[string]interface{}) {
7888 for k , v := range response {
7989 valueType := reflect .TypeOf (v )
8090 if valueType .Kind () == reflect .Slice {
81- fmt .Printf ("%s :\n " , k )
91+ fmt .Printf ("%v :\n " , k )
8292 for idx , item := range v .([]interface {}) {
8393 if idx > 0 {
8494 fmt .Println ("================================================================================" )
8595 }
8696 row , isMap := item .(map [string ]interface {})
8797 if isMap {
8898 for field , value := range row {
89- fmt .Printf ("%s = %v\n " , field , value )
99+ fmt .Printf ("%s = %v\n " , field , jsonify ( value ) )
90100 }
91101 } else {
92102 fmt .Printf ("%v\n " , item )
93103 }
94104 }
95105 } else {
96- fmt .Printf ("%s = %v\n " , k , v )
106+ fmt .Printf ("%v = %v\n " , k , jsonify ( v ) )
97107 }
98108 }
99109}
@@ -123,7 +133,7 @@ func printColumn(response map[string]interface{}) {
123133 }
124134 var values []string
125135 for _ , key := range header {
126- values = append (values , fmt . Sprintf ( "%v" , row [strings .ToLower (key )]))
136+ values = append (values , jsonify ( row [strings .ToLower (key )]))
127137 }
128138 fmt .Fprintln (w , strings .Join (values , "\t " ))
129139 }
@@ -156,7 +166,7 @@ func printCsv(response map[string]interface{}) {
156166 }
157167 var values []string
158168 for _ , key := range header {
159- values = append (values , fmt . Sprintf ( "%v" , row [key ]))
169+ values = append (values , jsonify ( row [key ]))
160170 }
161171 fmt .Println (strings .Join (values , "," ))
162172 }
0 commit comments