diff options
-rw-r--r-- | jsonpath_rw/jsonpath.py | 4 | ||||
-rw-r--r-- | tests/test_jsonpath.py | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/jsonpath_rw/jsonpath.py b/jsonpath_rw/jsonpath.py index 93d7b81..146a960 100644 --- a/jsonpath_rw/jsonpath.py +++ b/jsonpath_rw/jsonpath.py @@ -477,7 +477,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 `[:]` """ @@ -487,7 +487,7 @@ class Index(JSONPath): 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 2c01992..33c0ea6 100644 --- a/tests/test_jsonpath.py +++ b/tests/test_jsonpath.py @@ -130,7 +130,8 @@ class TestJsonPath(unittest.TestCase): 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): |