123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package exprhelpers
- import (
- "strings"
- "github.com/buger/jsonparser"
- log "github.com/sirupsen/logrus"
- )
- func JsonExtractLib(jsblob string, target ...string) string {
- value, dataType, _, err := jsonparser.Get(
- jsonparser.StringToBytes(jsblob),
- target...,
- )
- if err != nil {
- if err == jsonparser.KeyPathNotFoundError {
- log.Debugf("%+v doesn't exist", target)
- return ""
- }
- log.Errorf("jsonExtractLib : %+v : %s", target, err)
- return ""
- }
- if dataType == jsonparser.NotExist {
- log.Debugf("%+v doesn't exist", target)
- return ""
- }
- strvalue := string(value)
- return strvalue
- }
- func JsonExtractUnescape(jsblob string, target ...string) string {
- value, err := jsonparser.GetString(
- jsonparser.StringToBytes(jsblob),
- target...,
- )
- if err != nil {
- if err == jsonparser.KeyPathNotFoundError {
- log.Debugf("%+v doesn't exist", target)
- return ""
- }
- log.Errorf("JsonExtractUnescape : %+v : %s", target, err)
- return ""
- }
- log.Tracef("extract path %+v", target)
- strvalue := string(value)
- return strvalue
- }
- func JsonExtract(jsblob string, target string) string {
- if !strings.HasPrefix(target, "[") {
- target = strings.Replace(target, "[", ".[", -1)
- }
- fullpath := strings.Split(target, ".")
- log.Tracef("extract path %+v", fullpath)
- return JsonExtractLib(jsblob, fullpath...)
- }
|