jsonextract.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package exprhelpers
  2. import (
  3. "strings"
  4. "github.com/buger/jsonparser"
  5. log "github.com/sirupsen/logrus"
  6. )
  7. func JsonExtractLib(jsblob string, target ...string) string {
  8. value, dataType, _, err := jsonparser.Get(
  9. jsonparser.StringToBytes(jsblob),
  10. target...,
  11. )
  12. if err != nil {
  13. if err == jsonparser.KeyPathNotFoundError {
  14. log.Debugf("%+v doesn't exist", target)
  15. return ""
  16. }
  17. log.Errorf("jsonExtractLib : %+v : %s", target, err)
  18. return ""
  19. }
  20. if dataType == jsonparser.NotExist {
  21. log.Debugf("%+v doesn't exist", target)
  22. return ""
  23. }
  24. strvalue := string(value)
  25. return strvalue
  26. }
  27. func JsonExtractUnescape(jsblob string, target ...string) string {
  28. value, err := jsonparser.GetString(
  29. jsonparser.StringToBytes(jsblob),
  30. target...,
  31. )
  32. if err != nil {
  33. if err == jsonparser.KeyPathNotFoundError {
  34. log.Debugf("%+v doesn't exist", target)
  35. return ""
  36. }
  37. log.Errorf("JsonExtractUnescape : %+v : %s", target, err)
  38. return ""
  39. }
  40. log.Tracef("extract path %+v", target)
  41. strvalue := string(value)
  42. return strvalue
  43. }
  44. func JsonExtract(jsblob string, target string) string {
  45. if !strings.HasPrefix(target, "[") {
  46. target = strings.Replace(target, "[", ".[", -1)
  47. }
  48. fullpath := strings.Split(target, ".")
  49. log.Tracef("extract path %+v", fullpath)
  50. return JsonExtractLib(jsblob, fullpath...)
  51. }