jsonsplit.go 742 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package main
  2. import (
  3. "os"
  4. "fmt"
  5. "strings"
  6. "reflect"
  7. "flag"
  8. "github.com/tidwall/gjson"
  9. )
  10. func main(){
  11. var expr string
  12. var json string
  13. flag.StringVar(&expr, "expr", "", "json extract expr")
  14. flag.Parse()
  15. if flag.NArg() == 0 {
  16. fmt.Print("need json content")
  17. os.Exit(2)
  18. }else{
  19. json = strings.Join(flag.Args(), " ")
  20. }
  21. var value interface{}
  22. if expr != "" {
  23. value = gjson.Get(json, expr)
  24. }
  25. switch v := value.(type) {
  26. case []string :
  27. for _, object := range v {
  28. fmt.Println( object )
  29. }
  30. case gjson.Result :
  31. for _, object := range v.Array() {
  32. fmt.Println( object.Raw )
  33. }
  34. default :
  35. fmt.Println( reflect.TypeOf(value) )
  36. }
  37. }