diff options
Diffstat (limited to 'jsonpointer.py')
-rw-r--r-- | jsonpointer.py | 11 |
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__,)) |