(jsblob string, target string, t jsonparser.ValueType)
| 81 | } |
| 82 | |
| 83 | func jsonExtractType(jsblob string, target string, t jsonparser.ValueType) ([]byte, error) { |
| 84 | if !strings.HasPrefix(target, "[") { |
| 85 | target = strings.ReplaceAll(target, "[", ".[") |
| 86 | } |
| 87 | fullpath := strings.Split(target, ".") |
| 88 | |
| 89 | log.Tracef("extract path %+v", fullpath) |
| 90 | |
| 91 | value, dataType, _, err := jsonparser.Get( |
| 92 | jsonparser.StringToBytes(jsblob), |
| 93 | fullpath..., |
| 94 | ) |
| 95 | if err != nil { |
| 96 | if errors.Is(err, jsonparser.KeyPathNotFoundError) { |
| 97 | log.Debugf("Key %+v doesn't exist", target) |
| 98 | return nil, fmt.Errorf("key %s does not exist", target) |
| 99 | } |
| 100 | log.Errorf("jsonExtractType : %s : %s", target, err) |
| 101 | return nil, fmt.Errorf("jsonExtractType: %s : %w", target, err) |
| 102 | } |
| 103 | |
| 104 | if dataType != t { |
| 105 | log.Errorf("jsonExtractType : expected type %s for target %s but found %s", t, target, dataType.String()) |
| 106 | return nil, fmt.Errorf("jsonExtractType: expected type %s for target %s but found %s", t, target, dataType.String()) |
| 107 | } |
| 108 | |
| 109 | return value, nil |
| 110 | } |
| 111 | |
| 112 | // func JsonExtractSlice(jsblob string, target string) []interface{} { |
| 113 | func JsonExtractSlice(params ...any) (any, error) { |
no test coverage detected
searching dependent graphs…