@@ -9,6 +9,11 @@ import (
9
9
"unsafe"
10
10
)
11
11
12
+ var (
13
+ KeyPathNotFoundError = errors .New ("Key path not found" )
14
+ UnknownValueTypeError = errors .New ("Unknown value type" )
15
+ )
16
+
12
17
func tokenEnd (data []byte ) int {
13
18
for i , c := range data {
14
19
switch c {
@@ -182,7 +187,7 @@ If no keys provided it will try to extract closest JSON value (simple ones or ob
182
187
func Get (data []byte , keys ... string ) (value []byte , dataType int , offset int , err error ) {
183
188
if len (keys ) > 0 {
184
189
if offset = searchKeys (data , keys ... ); offset == - 1 {
185
- return []byte {}, NotExist , - 1 , errors . New ( "Key path not found" )
190
+ return []byte {}, NotExist , - 1 , KeyPathNotFoundError
186
191
}
187
192
}
188
193
@@ -239,18 +244,18 @@ func Get(data []byte, keys ...string) (value []byte, dataType int, offset int, e
239
244
if bytes .Equal (value , trueLiteral ) || bytes .Equal (value , falseLiteral ) {
240
245
dataType = Boolean
241
246
} else {
242
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
247
+ return nil , Unknown , offset , UnknownValueTypeError
243
248
}
244
249
case 'u' , 'n' : // undefined or null
245
250
if bytes .Equal (value , nullLiteral ) {
246
251
dataType = Null
247
252
} else {
248
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
253
+ return nil , Unknown , offset , UnknownValueTypeError
249
254
}
250
255
case '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '-' :
251
256
dataType = Number
252
257
default :
253
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
258
+ return nil , Unknown , offset , UnknownValueTypeError
254
259
}
255
260
256
261
endOffset += end
@@ -280,7 +285,7 @@ func ArrayEach(data []byte, cb func(value []byte, dataType int, offset int, err
280
285
281
286
if len (keys ) > 0 {
282
287
if offset = searchKeys (data , keys ... ); offset == - 1 {
283
- return errors . New ( "Key path not found" )
288
+ return KeyPathNotFoundError
284
289
}
285
290
286
291
// Go to closest value
0 commit comments