package main import ( "os" "fmt" "strings" "reflect" "flag" "github.com/tidwall/gjson" ) func main(){ var expr string var json string flag.StringVar(&expr, "expr", "", "json extract expr") flag.Parse() if flag.NArg() == 0 { fmt.Print("need json content") os.Exit(2) }else{ json = strings.Join(flag.Args(), " ") } var value interface{} if expr != "" { value = gjson.Get(json, expr) } switch v := value.(type) { case []string : for _, object := range v { fmt.Println( object ) } case gjson.Result : for _, object := range v.Array() { fmt.Println( object.Raw ) } default : fmt.Println( reflect.TypeOf(value) ) } }