@@ -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 {
@@ -186,7 +191,7 @@ If no keys provided it will try to extract closest JSON value (simple ones or ob
186
191
func Get (data []byte , keys ... string ) (value []byte , dataType ValueType , offset int , err error ) {
187
192
if len (keys ) > 0 {
188
193
if offset = searchKeys (data , keys ... ); offset == - 1 {
189
- return []byte {}, NotExist , - 1 , errors . New ( "Key path not found" )
194
+ return []byte {}, NotExist , - 1 , KeyPathNotFoundError
190
195
}
191
196
}
192
197
@@ -243,18 +248,18 @@ func Get(data []byte, keys ...string) (value []byte, dataType ValueType, offset
243
248
if bytes .Equal (value , trueLiteral ) || bytes .Equal (value , falseLiteral ) {
244
249
dataType = Boolean
245
250
} else {
246
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
251
+ return nil , Unknown , offset , UnknownValueTypeError
247
252
}
248
253
case 'u' , 'n' : // undefined or null
249
254
if bytes .Equal (value , nullLiteral ) {
250
255
dataType = Null
251
256
} else {
252
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
257
+ return nil , Unknown , offset , UnknownValueTypeError
253
258
}
254
259
case '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '-' :
255
260
dataType = Number
256
261
default :
257
- return nil , Unknown , offset , errors . New ( "Unknown value type" )
262
+ return nil , Unknown , offset , UnknownValueTypeError
258
263
}
259
264
260
265
endOffset += end
@@ -284,7 +289,7 @@ func ArrayEach(data []byte, cb func(value []byte, dataType ValueType, offset int
284
289
285
290
if len (keys ) > 0 {
286
291
if offset = searchKeys (data , keys ... ); offset == - 1 {
287
- return errors . New ( "Key path not found" )
292
+ return KeyPathNotFoundError
288
293
}
289
294
290
295
// Go to closest value
0 commit comments