@@ -155,6 +155,11 @@ func Extract(path string, obj interface{}) (interface{}, error) {
155155 return o [start :end ], nil
156156 case * reader.Cache :
157157 return o .ReadRange (start , end - 1 )
158+ case []interface {}:
159+ if len (remainder ) > 0 {
160+ return Extract (remainder , o [start :end ])
161+ }
162+ return o [start :end ], nil
158163 case []map [interface {}]interface {}:
159164 if len (remainder ) > 0 {
160165 return Extract (remainder , o [start :end ])
@@ -185,6 +190,11 @@ func Extract(path string, obj interface{}) (interface{}, error) {
185190 return o [start :], nil
186191 case * reader.Cache :
187192 return make ([]byte , 0 ), errors .New ("Reader cannot evaluate [start:]" )
193+ case []interface {}:
194+ if len (remainder ) > 0 {
195+ return Extract (remainder , o [start :])
196+ }
197+ return o [start :], nil
188198 case []map [interface {}]interface {}:
189199 if len (remainder ) > 0 {
190200 return Extract (remainder , o [start :])
@@ -226,6 +236,11 @@ func Extract(path string, obj interface{}) (interface{}, error) {
226236 return make ([]byte , 0 ), err
227237 }
228238 return values [0 ], nil
239+ case []interface {}:
240+ if len (remainder ) > 0 {
241+ return Extract (remainder , o [slice_index ])
242+ }
243+ return o [slice_index ], nil
229244 case []map [interface {}]interface {}:
230245 if len (remainder ) > 0 {
231246 return Extract (remainder , o [slice_index ])
0 commit comments