summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jsonpointer.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index 041fa4a..5b118a1 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -49,6 +49,11 @@ except ImportError: # Python 3
izip = zip
from itertools import tee
+import re
+
+
+# array indices must not contain signs, spaces, decimal parts, etc
+RE_ARRAY_INDEX=re.compile('^[0-9]+$')
class JsonPointerException(Exception):
@@ -227,11 +232,11 @@ class JsonPointer(object):
if part == '-':
return part
- try:
- return int(part)
- except ValueError:
+ if not RE_ARRAY_INDEX.match(part):
raise JsonPointerException("'%s' is not a valid list index" % (part, ))
+ return int(part)
+
else:
raise JsonPointerException("Unknown document type '%s'" % (doc.__class__,))