summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jsonpath_rw/jsonpath.py4
-rw-r--r--tests/test_jsonpath.py3
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):