diff --git a/jsonpath_rw/jsonpath.py b/jsonpath_rw/jsonpath.py index 3c491d0..f2cd82e 100644 --- a/jsonpath_rw/jsonpath.py +++ b/jsonpath_rw/jsonpath.py @@ -430,7 +430,7 @@ class Index(JSONPath): JSONPath that matches indices of the current datum, or none if not large enough. Concrete syntax is brackets. - WARNING: If the datum is not long enough, it will not crash but will not match anything. + WARNING: If the datum is None or not long enough, it will not crash but will not match anything. NOTE: For the concrete syntax of `[*]`, the abstract syntax is a Slice() with no parameters (equiv to `[:]` """ @@ -440,7 +440,7 @@ def __init__(self, index): def find(self, datum): datum = DatumInContext.wrap(datum) - if len(datum.value) > self.index: + if datum.value and len(datum.value) > self.index: return [DatumInContext(datum.value[self.index], path=self, context=datum)] else: return [] diff --git a/tests/test_jsonpath.py b/tests/test_jsonpath.py index bf3d5c6..32d6d6a 100644 --- a/tests/test_jsonpath.py +++ b/tests/test_jsonpath.py @@ -130,7 +130,8 @@ def test_index_value(self): self.check_cases([ ('[0]', [42], [42]), ('[5]', [42], []), - ('[2]', [34, 65, 29, 59], [29]) + ('[2]', [34, 65, 29, 59], [29]), + ('[0]', None, []) ]) def test_slice_value(self):